每次运行make.If时,我都会收到这个错误。我从另一个目录复制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发布于 2018-08-08 22:38:32
错误消息告诉您,链接libsrt.so失败是因为您尝试将libsrt.so与libcrypto.a链接,但libcrypto.a不符合-fPIC。
-fPIC是一个编译器标志,它将代码生成更改为生产位置独立代码(PIC),这对于共享对象是必需的,因为链接器不知道共享对象将被加载到哪里。
要解决此问题,您可以:
如果您自己编译了libcrypto.a,请使用-fPIC重新编译
,请使用libcrypto libcrypto.so的共享对象
在您的例子中,使用libcrypto.so将libcrypto作为openssl的一部分要好得多。
发布于 2018-08-09 00:27:38
您需要构建一个共享版本的libcrypto - libcrypto.so。并对其进行链接(当.so出现时,链接器会自动执行此操作)。
https://stackoverflow.com/questions/51749149
复制相似问题