C++ 在macOS上使用-fuse ld=lld并发出叮当声
我在macOS 10.15上使用Clang 10(不是AppleClang),并试图通过在CMake flagsC++ 在macOS上使用-fuse ld=lld并发出叮当声,c++,macos,cmake,clang,lld,C++,Macos,Cmake,Clang,Lld,我在macOS 10.15上使用Clang 10(不是AppleClang),并试图通过在CMake flagsCMake\u EXE\u LINKER\u flags中指定-fuse ld=LLD来链接LLD 但是,当我尝试使用LLD时,出现以下错误: The C++ compiler "/Users/XXX/llvm/bin/clang++" is not able to compile a simple test program. It fails with the followin
CMake\u EXE\u LINKER\u flags
中指定-fuse ld=LLD
来链接LLD
但是,当我尝试使用LLD时,出现以下错误:
The C++ compiler
"/Users/XXX/llvm/bin/clang++"
is not able to compile a simple test program.
It fails with the following output:
ld64.lld: warning: ignoring unknown argument: -platform_version
ld64.lld: warning: ignoring unknown argument: -search_paths_first
ld64.lld: warning: ignoring unknown argument: -headerpad_max_install_names
ld64.lld: warning: -sdk_version is required when emitting min version load command. Setting sdk version to match provided min version
ld64.lld: error: Unable to find library for -lc++
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [cmTC_0d561] Error 1
make: *** [cmTC_0d561/fast] Error 2
这是我的节目:
#include <iostream>
#include <cstdlib>
int main()
{
std::cout << "Hello World!" << std::endl;
return EXIT_SUCCESS;
}
以下是启动CMake的bash脚本:
#!/bin/bash
root="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
sys_root="/Users/XXX/macOS-sdks/MacOSX10.13.sdk"
cmake_bin_path="/Applications/CMake.app/Contents/bin"
llvm_bin="/Users/XXX/llvm/bin"
function add_search_path() {
if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
PATH="${PATH:+"$PATH:"}$1"
fi
}
add_search_path $cmake_bin_path
add_search_path $llvm_bin
cd "${root}/build"
cmake -DCMAKE_OSX_SYSROOT=${sys_root} \
-DCMAKE_C_COMPILER="${llvm_bin}/clang" \
-DCMAKE_CXX_COMPILER="${llvm_bin}/clang++" \
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_BUILD_TYPE=Debug ..
cores=`sysctl -n hw.physicalcpu`
cmake --build "${root}/build" --target all -- -j ${cores}
./testprog
lld
在macOS上不起作用。使用ld
akald64
。
参见。AppleClang是LLVM Clang的精简版本。用所需的项目构建后者,lld也可以在macOS上为简单的程序工作 搜索git历史也显示了lld-mach-o的生命迹象 但是,它使用
-framework
标志失败。如果您发现错误,请在
有关铿锵编译指令(以及在Xcode中使用它的方法),请参阅
#!/bin/bash
root="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
sys_root="/Users/XXX/macOS-sdks/MacOSX10.13.sdk"
cmake_bin_path="/Applications/CMake.app/Contents/bin"
llvm_bin="/Users/XXX/llvm/bin"
function add_search_path() {
if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then
PATH="${PATH:+"$PATH:"}$1"
fi
}
add_search_path $cmake_bin_path
add_search_path $llvm_bin
cd "${root}/build"
cmake -DCMAKE_OSX_SYSROOT=${sys_root} \
-DCMAKE_C_COMPILER="${llvm_bin}/clang" \
-DCMAKE_CXX_COMPILER="${llvm_bin}/clang++" \
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld" \
-DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_BUILD_TYPE=Debug ..
cores=`sysctl -n hw.physicalcpu`
cmake --build "${root}/build" --target all -- -j ${cores}
./testprog