小编典典

合并多个.so共享库

linux

说我有a.so和b.so。我是否可以将c.so生成为具有a和b导出的所有功能的单个共享库,当然可以解决所有内部依赖关系(即a.so调用的b.so的所有功能,反之亦然)?

我试过了

gcc -shared -Wl,soname,c.so -o c.so a.so b.so

但这不起作用。

如果我在aa和ba中归档ao和bo(也不应修改ao和bo),也是如此

gcc -shared -Wl,soname,c.so -o c.so aa ba

谢谢


阅读 1100

收藏
2020-06-02

共1个答案

小编典典

除了AIX之外,在所有UNIXen上实际上都不可能将多个共享库合并为一个:链接器将.so视为“最终”产品。

但是将档案合并到.so中应该不是问题:

gcc -shared -o c.so -Wl,--whole-archive a.a b.a -Wl,--no-whole-archive
2020-06-02