【问题标题】:Compilation fails due to relocation error由于重定位错误,编译失败
【发布时间】:2020-08-07 19:18:29
【问题描述】:

我正在尝试编译ANN。我使用以下命令编译,

make linux-g ++

稍后当我尝试在另一个代码中使用它时,代码没有编译。我收到以下错误,

>  relocation R_X86_64_PC32 against symbol `_ZSt4cerr@@GLIBCXX_3.4' can
> not be used when making a shared object; recompile with -fPIC
> /usr/bin/ld: final link failed: Bad value

在经历了各种问题之后,我尝试在 CMAKE 中添加以下行,

set_target_properties(${LIBRARY_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)

但是,它仍然不起作用。我该如何解决这个问题?

【问题讨论】:

  • 你累了吗make clean(从头开始构建)?
  • @MarekR 是的,我做了make clean 并重新编译,但由于某种原因,它仍然没有按预期工作
  • 我正在使用 Linux Mint
  • 我使用的是 64 位系统
  • 您能否将其发布为答案?它就像一个魅力!

标签: c++ makefile cmake compilation


【解决方案1】:

我不确定这是一个正确的解决方案,但作为一种解决方法,您可以替换该行

"C++ = g++"

"C++ = g++ -fPIC"

在文件Make-config中然后重新编译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 1970-01-01
    • 2015-12-16
    • 1970-01-01
    相关资源
    最近更新 更多