免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 15376 | 回复: 17
打印 上一主题 下一主题

可以把多个.a文件打包进一个.a文件中吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-21 19:22 |只看该作者 |倒序浏览
我有多个.a文件:liba.a libb.a libc.a
然后将它们用下面的目录打包在一个.a文件中:
$ ar -rcs libobj.a libaa.a libab.a libac.a

没有报任何错误,成功生成了libobj.a文件,但是我在用libobj.a文件生成应用程序时出错了:
$ g++ -o hello hello.cpp libobj.a

出错了:
libobj.a: could not read symbols: 归档没有索引;运行 ranlib 以添加一个

我执行了:
$ ranlib libobj.a

成功执行,但是编译的时候还是报一样的错。
为什么?可以把多个.a文件打包进一个.a文件中吗?

论坛徽章:
0
2 [报告]
发表于 2009-12-21 20:02 |只看该作者
ar 只是一个打包器(跟tar功能相同), 又不是编译器,怎么会报错呢,最多就是来一个找不到文件而已。
你需要做的是把 .a 里面的文件给拆出来,然后再ar。

论坛徽章:
0
3 [报告]
发表于 2009-12-21 22:03 |只看该作者
原帖由 pagx 于 2009-12-21 20:02 发表
ar 只是一个打包器(跟tar功能相同), 又不是编译器,怎么会报错呢,最多就是来一个找不到文件而已。
你需要做的是把 .a 里面的文件给拆出来,然后再ar。


就是.o文件太多了,所以才想分成几个.a文件。
多个.a文件不能再打包成.a文件吗?

论坛徽章:
0
4 [报告]
发表于 2009-12-21 22:36 |只看该作者
应该是不行的,我曾经做过实验,将静态库文件和.o文件一起打包成一个静态库文件,结果是:所有的函数都是不能调用的

论坛徽章:
0
5 [报告]
发表于 2009-12-22 09:49 |只看该作者
原帖由 wxfjx 于 2009-12-21 22:36 发表
应该是不行的,我曾经做过实验,将静态库文件和.o文件一起打包成一个静态库文件,结果是:所有的函数都是不能调用的


对,我也做了这个实验,确实不行。
是参数没有设置对呢?还是根本就不行?。。。

论坛徽章:
0
6 [报告]
发表于 2009-12-22 09:53 |只看该作者
最多也是机器帮你处理,少操那份心。

论坛徽章:
0
7 [报告]
发表于 2009-12-22 10:49 |只看该作者
原帖由 pagx 于 2009-12-22 09:53 发表
最多也是机器帮你处理,少操那份心。

也不是少操那份心,

公司在现有的一个静态库上搞开发,想在静态库上加个壳,添加一些API,也做成一个静态库,那怎么办?这个问题一直没有解决,暂时搁浅……

论坛徽章:
0
8 [报告]
发表于 2009-12-22 11:38 |只看该作者
ar a libxxx.a killboss.o
randlib libxxx.a

这样可以不?

论坛徽章:
0
9 [报告]
发表于 2009-12-22 12:00 |只看该作者
.a 只是 Unix archive,可以存储任何文件,你用 ar 打包进去的不是 .o,而是 .a。
正确的做法是先解包,再重新打包成单一的 archive。

论坛徽章:
0
10 [报告]
发表于 2009-12-22 12:06 |只看该作者
楼上版主大哥,具体怎么样解包啊?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP