c - 合并多个 .so 共享库

标签 c linux unix gcc shared-libraries

假设我有 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

关于c - 合并多个 .so 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915128/

相关文章:

c - Unix socket编程如何获取本地IP地址和端口?

c - 将 void 作为返回类型写入 malloc 的包装器

linux - 如何找到程序中断的当前位置

c - 65 是如何翻译成 'A' 字符的?

Python PDF缩略图预览生成

linux - 如何签署 Linux/Android 共享库?

c++ - 带双括号的 C++ if 语句有什么作用?

java - 使用纯 Java 与 SSH 服务器通信以进行文件访问

c - 如何用 C 中的数组解决这个问题?

c - 使用 opendir() 获得的目录流中的条目顺序