我每次运行make时都会遇到此错误。如果我从另一个目录复制libsrt.so,则它将被编译。有人知道吗?
Linking CXX shared library libsrt.so
/usr/bin/ld: /usr/local/ssl/lib/libcrypto.a(aes_misc.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/local/ssl/lib/libcrypto.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
CMakeFiles/srt.dir/build.make:763: recipe for target 'libsrt.so.1.2.0' failed
最佳答案
错误消息告诉您,由于您尝试将libsrt.so
与libsrt.so
链接,但libcrypto.a
不符合libcrypto.a
,因此-fPIC
的链接失败。-fPIC
是一个编译器标志,它将代码生成更改为共享对象所需的生产位置无关代码(PIC),因为链接器不知道共享对象的加载位置。
要解决此问题,您可以:
libcrypto.a
重新编译-fPIC
。libcrypto.so
的共享库在您的情况下,使用
libcrypto.so
将libcrypto作为openssl的一部分要好得多关于c++ - c++链接器错误 'relocation R_X86_64_32 against ` .rodata.str1.1'链接CXX共享库libsrt.so,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51749149/