我尝试在 CDT 中为我的 c++ 项目引用一个静态的 *.a
库。我把它包括在
C/C++ 构建 -> 跨 C++ 链接器 -> 库
但我得到了错误:
重定位 R_X86_64_32S 对符号 … 制作共享对象时不能使用。
现在从我目前所读的内容来看,我认为这意味着编译器认为我正在引用一个共享库,而它是一个静态库 - 是这样吗?如果是这样,现在可以做什么?有什么方法可以只使用 *.a
库还是我必须将它们重新编译为 .so
对象?
原文由 don-joe 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题很可能是由于静态库是在不支持 位置无关代码 的情况下编译的。我不知道如何在不重新编译静态库的情况下修复它。
如果您可以重新编译静态库,那么假设您使用的是 gcc 或 clang,则必须将
-fPIC
标志添加到编译器标志中。没有更多信息,很难给出更多建议。如果您可以提供一个 最小的、可重现的示例,那么我可以为您提供帮助。