这是我的情况
我有一个共享库 (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 answer和 this one
关于c++ - 动态加载的 PIC 共享库具有来自 NPIC 依赖项的运行时未解析符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39084549/