多个.a文件怎么合并为一个.a或者.so

发布于 2022-09-18 11:13:38 字数 24 浏览 9 评论 0

有没有办法将a.so和b.so合成为ab.so?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

内心荒芜 2022-09-25 11:13:38

怎么有这么奇怪的需求?

深爱不及久伴 2022-09-25 11:13:38

有没有办法将a.so和b.so合成为ab.so?
不行

娇纵 2022-09-25 11:13:38

楼上的,为嘛不行啊?

ら栖息 2022-09-25 11:13:38

我的代码中模块太多了,想把各个模块的so变成一个统一的so,省得麻烦

水波映月 2022-09-25 11:13:38

ld combines a number of object and archive files, relocates their data and ties up
       symbol references. Usually the last step in compiling a program is to run ld.

后知后觉 2022-09-25 11:13:38

楼上的基础真扎实,佩服!
特地请教另外一个问题:
能不能把x.a和y.a编译成为xy.a?
我曾经试过:ar cqs xy.a x.a y.a
但是,在main.cpp链接xy.a的时候,提示xy.a里面没有index?

破晓 2022-09-25 11:13:38

可以,不过得先解压出来.o

  1. ls *.a|xargs -i ar -x -v {}|cut -d " " -f3|xargs -i ar -v -q newar.a {}

复制代码
[ 本帖最后由 liying_gg 于 2009-12-28 15:30 编辑 ]

浸婚纱 2022-09-25 11:13:38

学习!

独闯女儿国 2022-09-25 11:13:38

经过大家的帮助,我已经得到了结论:
我的疑问是:一个完整的应用,有几个模块(a,b……)组成,a被b调用,b被应用层(m)调用。
为了将各个模块统一为一个库文件,各个模块的编译有如下两个选择:
1)把各个模块编译为静态库(liba.a,libb.a……),然后把各个静态库解开为.o文件,再打包为统一的库文件libab.a;
2)把底层模块编译为静态库(liba.a……),把上层模块编译为动态库(libb.so……),同时链接底层库,最后得到统一的库文件libab.so;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文