c++ - 动态加载的 PIC 共享库具有来自 NPIC 依赖项的运行时未解析符号

标签 c++ gcc

这是我的情况

我有一个共享库 (PIC) foo.so。它使用来自 bar.a 的符号。 bar.a 是 NPIC。所以不能添加到 foo.so 的链接行。

foo.so 是从 main.C 动态加载的 它加载正常,但在运行时使用来自 bar.a 的符号时,它会以未解析的符号退出。

有人建议我使用 2 个解决方案 1、编译bar.a PIC,加入foo.so的链接行 2. 在 main.C 链接行上使用“-Wl,--whole-archive bar.a -rdynamic”

1 是不可能的,因为 bar.a 是第三方库。 2 是不可能的,因为我们不希望我们的符号被导出。

是否有任何其他习语/解决方案来解决这个问题?

最佳答案

“1 不可能,因为 bar.a 是第三方”。

这听起来不对。可以链接任何静态库。 要使用的成语。另请查看 this answerthis one

关于c++ - 动态加载的 PIC 共享库具有来自 NPIC 依赖项的运行时未解析符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39084549/

相关文章:

c - 从 fgets() 输入中删除尾随换行符

c - 海合会错误 : "Inputtools.c:85: error: conflicting types for ‘strcasestr’ "

c++ - 为什么要为结构的多个数据成员而不是单个成员添加填充?

c++ - 强制程序以 root 身份启动并稍后删除

C++如何定义静态成员,哪个类有私有(private)构造函数?

c++ - Bind() Windows Socket 适用于 IPv4,但不适用于 IPv6

c++ - c 问题错误在此函数中使用统一化

gcc - 如何在没有任何循环或分支的情况下强制 CPU 按顺序执行程序?

c - 编译步骤

gcc - 如何忽略 clang/gcc 中包含的 header 的所有警告?