QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1558|回复: 4

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

[复制链接]
发表于 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/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
请问如何做到!谢谢

另外的问题是如何把这些*.o文件,编译成一个动态库,谢谢!
发表于 2006-11-15 10:14:12 | 显示全部楼层
man gcc
看看其中的shared参数
回复

使用道具 举报

 楼主| 发表于 2006-11-15 10:25:16 | 显示全部楼层
好像没有理解我的意思
回复

使用道具 举报

发表于 2006-11-15 12:33:07 | 显示全部楼层
.a => .o
ar x first.a


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

使用道具 举报

 楼主| 发表于 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文件中!谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-5-3 19:38 , Processed in 0.135750 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表