合并多个 .so 共享库
- 2024-10-11 08:36:00
- admin 原创
- 249
问题描述:
假设我有 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
但它不起作用。
如果我将 ao 和 bo 归档到 aa 和 ba 中(这不应该修改 ao 和 bo),然后执行
gcc-shared-Wl,soname,c.so-o c.so aa ba
谢谢
解决方案 1:
除了 AIX 之外,在所有 UNIXen 上将多个共享库合并为一个实际上是不可能的:链接器将 .so 视为“最终”产品。
但将档案合并到 .so 中应该没有问题:
gcc -shared -o c.so -Wl,--whole-archive a.a b.a -Wl,--no-whole-archive
解决方案 2:
但实际上这是不可能的。
从链接器的角度来看,SO 库是不包含链接所需重定位信息的最终产品。
如果您有权访问两个库的源文件或目标文件,则可以直接从它们编译/链接组合的 SO。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD