Chinaunix

标题: 静态库可以再包含静态库吗? [打印本页]

作者: chengdot    时间: 2010-01-06 18:10
标题: 静态库可以再包含静态库吗?
我用 ar 命令把一个 .o 文件和 libA.a 打包成一个 libB.a;
再把 libB.a 与目标代码连接生成可执行程序的时候,提示无法连接 libA.a 内的对象;

用 objdump 查看 libB.a,显示 libA.a 是未知格式,估计是把 libA.a 当成了普通的 .o 文件,

那么,是否有办法把 libA.a 打包到 libB.a 中呢?

我不想带着那么多的静态文件。

谢谢。
作者: chengdot    时间: 2010-01-07 08:58
我顶
作者: drowndog    时间: 2010-01-07 09:36
一个应用,在链接时如果使用了静态库,那么,静态库中的内容会完全被放到应用中来,在发行时就没必要再带上库了啊。不知道你为何有这样的疑问。
作者: 克拉玛依    时间: 2010-01-07 09:38
如楼上所说,如果连接了动态库则需要在运行时载入。

对应用来说就是一个符号二一
作者: chengdot    时间: 2010-01-07 09:45
标题: 回复 #3 drowndog 的帖子
我所说的“我不想带着那么多的静态文件。”并非指运行时带着,而是编译/链接时也不想带得太多。

如果 libA.a 和 libB.a 本身就一定是一起使用的,我就只想有一个 libB.a 就可以了。
作者: 克拉玛依    时间: 2010-01-07 09:46
标题: 回复 #5 chengdot 的帖子
当然可以
作者: snow888    时间: 2010-01-07 09:51
标题: 回复 #5 chengdot 的帖子
把 libA.a 展开,然后重新打包 .
作者: chengdot    时间: 2010-01-07 10:10
标题: 回复 #7 snow888 的帖子
再请问:如何展开?
作者: chengdot    时间: 2010-01-07 10:20
其实不用展开,直接 ar r libA.a b*.o 可以追加 .o 到 .a 中,

谢谢各位。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2