我尝试在 CDT 中为我的 c++ 项目引用静态 *.a
库。我把它包含在
C/C++ Build -> Cross C++ Linker -> Libraries
但是我得到了错误:
relocation R_X86_64_32S against symbol ... can not be used when making a shared object.
现在,从我目前所读的内容来看,我认为这意味着编译器认为我正在引用一个共享库,而实际上它是一个静态库 - 是这样吗?如果是,现在该怎么办?有什么方法可以只使用 *.a
库,还是我必须将它们重新编译为 .so
- 对象?
最佳答案
问题很可能是因为静态库是在不支持position independent code 的情况下编译的。 .我不知道如何在不重新编译静态库的情况下修复它。
如果您可以重新编译静态库,那么假设您使用的是 gcc 或 clang,则必须将 -fPIC
标志添加到您的编译器标志中。
没有更多信息,很难提供更多建议。如果你能提供一个minimal, reproducible example , 那么我可以帮助你。
关于c++ - CDT 使用 lib*.a --- 对符号重定位 R_X86_64_32S ... 不能使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45691778/