首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++链接器错误'relocation R_X86_64_32 c++ `.rodata.str1.1‘链接CXX共享库libsrt.so

c++链接器错误'relocation R_X86_64_32 c++ `.rodata.str1.1‘链接CXX共享库libsrt.so
EN

Stack Overflow用户
提问于 2018-08-08 22:25:35
回答 2查看 689关注 0票数 1

每次运行make.If时,我都会收到这个错误。我从另一个目录复制libsrt.so,然后编译它。有谁知道吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2018-08-08 22:38:32

错误消息告诉您,链接libsrt.so失败是因为您尝试将libsrt.solibcrypto.a链接,但libcrypto.a不符合-fPIC

-fPIC是一个编译器标志,它将代码生成更改为生产位置独立代码(PIC),这对于共享对象是必需的,因为链接器不知道共享对象将被加载到哪里。

要解决此问题,您可以:

如果您自己编译了libcrypto.a,请使用-fPIC重新编译

  • 如果您收到了已编译的二进制文件

,请使用libcrypto libcrypto.so的共享对象

在您的例子中,使用libcrypto.so将libcrypto作为openssl的一部分要好得多。

票数 0
EN

Stack Overflow用户

发布于 2018-08-09 00:27:38

您需要构建一个共享版本的libcrypto - libcrypto.so。并对其进行链接(当.so出现时,链接器会自动执行此操作)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51749149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档