gpt4 book ai didi

c++ 链接器错误 'relocation R_X86_64_32 against ` .rodata.str1.1' Linking CXX shared library libsrt.so

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:42 38 4
gpt4 key购买 nike

我每次运行 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.solibcrypto.a但是libcrypto.a不符合 -fPIC .

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

要解决此问题,您可以:

  • 重新编译 libcrypto.a-fPIC如果你自己遵守了
  • 使用libcrypto 的共享对象libcrypto.so如果您收到编译好的二进制文件

在你的例子中,libcrypto 是 openssl 的一部分,使用 libcrypto.so好多了

关于c++ 链接器错误 'relocation R_X86_64_32 against ` .rodata.str1.1' Linking CXX shared library libsrt.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51749149/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com