gotop167 发表于 2006-11-15 09:04:19

关于动态库和静态库的问题,谢谢

在first文件夹下包含如下文件
first
   1.c
   2.c
在second文件下包含如下文件
second
   3.c
   4.c
--------------------------------------------------------------------------------
假设编译成如下的静态库:
first.a
second.a

first.a中包含1.o,2.o
second.a中包含3.o,4.o

我现在执行这样的命令:ar rcs total.a first.a second.a
结果可以得到total.a这个库。

但是我执行命令:ar tv total.a时,结果如下:
rw-r--r-- 0/023560 Nov 13 14:47 2006 first.a
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 second.a
我想得到的是这样的结果
rw-r--r-- 0/023560 Nov 13 14:47 2006 1.o
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 2.o
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 3.o
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 4.o
请问如何做到!谢谢

另外的问题是如何把这些*.o文件,编译成一个动态库,谢谢!

sjinny 发表于 2006-11-15 10:14:12

man gcc
看看其中的shared参数

gotop167 发表于 2006-11-15 10:25:16

好像没有理解我的意思

AnthonyLee 发表于 2006-11-15 12:33:07

.a => .o
ar x first.a


.a => .so
ld --whole-archive -shared -o total.so total.a

gotop167 发表于 2006-11-15 12:42:34

谢谢 AnthonyLee的回答,第二个问题已经解决!

第一个问题是,有两个*.a文件,假设为
first.a和second.a,

first.a中包含1.o,2.o
second.a中包含3.o,4.o

现在我想通过这两个*.a文件生成个新的.a文件,我通过这个命令
ar rcs total.a first.a second.a
但是我执行命令:ar tv total.a时,结果如下:
rw-r--r-- 0/0 23560 Nov 13 14:47 2006 first.a
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 second.a
我想得到的是这样的结果
rw-r--r-- 0/0 23560 Nov 13 14:47 2006 1.o
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 2.o
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 3.o
rw-r--r-- 0/0 103812 Nov 13 14:47 2006 4.o
请问如何做到!谢谢
也就是把两个.a库中的目标文件,放到新生成的.a文件中!谢谢!
页: [1]
查看完整版本: 关于动态库和静态库的问题,谢谢