关于GCC将多个LIB打包成一个的问题

jjiaming 2014-04-25 02:53:57
各位大虾:
目前我手头有这么一个需求:我们需要开发一些功能以LIB的形式发布给客户,以便客户进行二次开发。现在我们会有很多个LIB,我想找包成一个LIB, 但是发现在链接的时候报错: could not read symbols: Archive has no index; run ranlib to add one。
请问各位有什么好办法没?

我实验的命令如下:

$ mips-elf-gcc -static -c test1.c
$ mips-elf-gcc -static -c test2.c
$ mips-elf-ar qs libtest2.a test2.o
$ mips-elf-ar qs libtest1.a test1.o
$ mips-elf-ar qs liball.a libtest1.a libtest2.a
$ mips-elf-ranlib liball.a
$ mips-elf-ld -nostdlib -L/cygdrive/d/gcc_test/ -lall -Map all.map
/cygdrive/d/gcc_test//liball.a: could not read symbols: Archive has no index; ru
n ranlib to add one
...全文
2921 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxianbin 2014-05-05
  • 打赏
  • 举报
回复
引用 9 楼 jjiaming 的回复:
to zhxianbin: 我试过ranlib了,也不行 要不你简单试一下吧 ,感觉GCC是不是没办法用多个LIB打包成一个LIB?
测试了一下,不能对 .a 文件使用 ar $ mips-elf-gcc -static -c test1.c $ mips-elf-gcc -static -c test2.c $ mips-elf-ar qs libtest2.a test2.o $ mips-elf-ar qs libtest1.a test1.o $ mips-elf-ar qs liball.a libtest1.a libtest2.a #不能这样使用 $ mips-elf-ranlib liball.a 可行的办法是 2楼的做法,如果很多 .o 文件有重名的话,可能要手动解决了。 -- 首先解出 .o 文件 ar x libadd.a ar x libsubtract.a ar x libmultiply.a -- 生成静态库 ar rcs liball.a *.o
jjiaming 2014-04-30
  • 打赏
  • 举报
回复
to zhxianbin: 我试过ranlib了,也不行 要不你简单试一下吧 ,感觉GCC是不是没办法用多个LIB打包成一个LIB?
zhxianbin 2014-04-30
  • 打赏
  • 举报
回复
http://blog.csdn.net/yuntongsf/article/details/6284517 提示 Archive has no index; run ranlib to add one
jjiaming 2014-04-30
  • 打赏
  • 举报
回复
to FENGQIYUNRAN: 这个问题在于:有很多的.o文件,有可能会有重名。 to zhxianbin: 问题在于合并成一个静态库,但是这个静态库在链接的时候过不了
zhxianbin 2014-04-28
  • 打赏
  • 举报
回复
问题不就是生成一个动态库或静态库吗
inurlcn 2014-04-28
  • 打赏
  • 举报
回复
研究下ar工具
adaiucfnm 2014-04-27
  • 打赏
  • 举报
回复
具体不是很详细,请提供详细的代码
FeelTouch Labs 2014-04-26
  • 打赏
  • 举报
回复
.a 文件的结构和.tar文件一个意思,都是包的意思
FeelTouch Labs 2014-04-26
  • 打赏
  • 举报
回复
这种问题的解决思路: 1,先将.a文件进行解析成.o文件在进行合并就可以。 例如: 假设A.a, B.a C.a 在/usr/local/lib目录下(参考自:mymtom ) mkdir /tmp/libABC cd /tmp/libABC ar x /usr/local/lib/A.a ar x /usr/local/lib/B.a ar x /usr/local/lib/C.a ar cru libABC.a *.o ranlib libABC.a
jjiaming 2014-04-25
  • 打赏
  • 举报
回复
没人理?我自己顶一个

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧