c - 合并多个 .so 共享库

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

我试过了

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

但它不起作用。

如果我将 a.o 和 b.o 归档在 a.a 和 b.a 中(不应该修改 a.o 和 b.o),也一样

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

谢谢

最佳答案

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

但是将文件合并到 .so 应该不是问题:

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

https://stackoverflow.com/questions/915128/

相关文章:

c++ - GLIBCXX 版本

linux - 如何为 Linux、OS X、Windows 制作 Travis CI 测试包?

linux - 是否对 10000 个客户端/秒问题的解决方案进行了现代审查

linux - 在Linux中使用空格设置环境变量

linux - 用于 ssh 的类似 teamviewer 的工具?

c++ - 当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

linux - 根据日期范围过滤日志文件条目

linux - 使用 find 和 -exec {},有没有办法计算总数?

c++ - 如何使用多个版本的 GCC

linux - 对一行的最后一个字段进行排序