每次运行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
答案 0 :(得分:0)
错误消息告诉您,libsrt.so
的链接失败,因为您尝试将libcrypto.a
与libcrypto.a
链接,但是-fPIC
与{{ 1}}。
-fPIC
是一个编译器标志,它将代码生成更改为共享对象所需的生产位置独立代码(PIC),因为链接器不知道共享对象的加载位置。
要解决此问题,您可以:
libcrypto.a
与-fPIC
重新组合libcrypto.so
的共享库在您的情况下,使用libcrypto.so
将libcrypto作为openssl的一部分要好得多
答案 1 :(得分:0)
您需要构建libcrypto
-libcrypto.so
的共享版本。并对此进行链接(当存在.so
时,链接器会自动进行链接。)