【问题标题】:Unable to Change Default Linker in CMake无法更改 CMake 中的默认链接器
【发布时间】:2018-01-08 15:23:03
【问题描述】:

我正在尝试将我的链接器更改为 ld.gold,以便我可以构建 LLVM 和 CLANG 更快。我已将环境变量更改为:

export LD=ld.gold

我已将 ccmake 中的 CMAKE_LINKER 更改为 /usr/bin/ld.gold。然而, 当我生成文件时,我的链接器被检测为 GNU ld。跑台 在编译期间确认 ld 正在运行而不是黄金。

当编辑 CMake Link Executable 变量时:

cmake -DCMAKE_LINKER=/usr/bin/ld.gold -DCMAKE_CXX_LINK_EXECUTABLE="<CMAKE_LINKER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>" -G "Unix Makefiles" ../llvm

我收到以下错误:

/usr/bin/ld.gold: -Werror=date-time: unknown option
/usr/bin/ld.gold: use the --help option for usage information
utils/PerfectShuffle/CMakeFiles/llvm-PerfectShuffle.dir/build.make:94: recipe for target 'bin/llvm-PerfectShuffle' failed
make[2]: *** [bin/llvm-PerfectShuffle] Error 1
CMakeFiles/Makefile2:13983: recipe for target 'utils/PerfectShuffle/CMakeFiles/llvm-PerfectShuffle.dir/all' failed

我使用的是 Ubuntu 16.04,但我在 Arch Linux 上遇到了同样的问题。

谢谢。

【问题讨论】:

  • 我指定设置 CMAKE_LINKER 变量不起作用,这是该问题的解决方案。
  • CMAKE_{C,CXX}_LINK_EXECUTABLE
  • 仔细阅读the answer:除了CMAKE_LINKER,它还指定了CMAKE_CXX_LINK_EXECUTABLE变量。
  • 所以你的链接器不支持选项-Werror=date-time。因为这实际上是一个编译器选项,你可以尝试从CMAKE_CXX_LINK_EXECUTABLE定义中删除&lt;FLAGS&gt;

标签: c++ linux cmake linker clang


【解决方案1】:

CMAKE_EXE_LINKER_FLAGS=-fuse-ld=gold 会将-fuse-ld=gold 传递给编译器,编译器将正确使用黄金链接器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2017-07-01
    • 2015-07-13
    相关资源
    最近更新 更多