【发布时间】:2020-03-30 15:31:37
【问题描述】:
我有一个运行 macOS 10.12 的 Jenkins 构建服务器。
我正在使用最新的 Clang 10(不是 AppleClang)和 CMake 3.17 编译 C++ 应用程序。
我得到的错误是:
The C++ compiler
"/Users/XXX/llvm/bin/clang++"
is not able to compile a simple test program.
It fails with the following output:
ld: unknown option: -platform_version
clang-10: error: linker failed with exit code 1
这适用于同一服务器上的 Clang 9,而 Clang 10 在 macOS 10.15 上运行良好,所有其他构建工具和源文件都相同(Jenkins 每次运行一个干净的构建)。它似乎是 Clang 10 和 macOS 10.12 的组合。 Clang 9 和 Clang 10 之间有什么变化会导致这种情况吗?
我正在像这样调用 CMake:
cmake -DCMAKE_OSX_SYSROOT="${macos_sdk}" \
-DCMAKE_C_COMPILER="${llvm_bin}/clang" \
-DCMAKE_CXX_COMPILER="${llvm_bin}/clang++" \
-DCMAKE_OSX_ARCHITECTURES=${architectures} \
-DCMAKE_BUILD_TYPE=${make_build_type} ..
【问题讨论】:
-
which ld或者 cmake 使用哪个ld? -
@Richard Barber
lld来自 Clang 10 所在的 LLVM 10 bin 目录。通过-DCMAKE_LINKER="${llvm_bin}/lld"传递给 CMake,其中llvm_bin是 LLVM 10 在我的构建服务器上的位置 -
还有什么版本的ld。我怀疑您使用的是 520 之前的二进制文件。
-
@Richard Barber -
ld -v给了ld64-305 ... LTO support using: LLVM version 9.0.0 (clang-900.0.39.2) ... -
@Richard Barber,使用
DCMAKE_CXX_LINK_EXECUTABLE似乎无法解决问题 - 基于这种思路,可能是 CMake 忽略了我要使用的链接器?
标签: c++ macos cmake clang llvm-clang