编译gcc时,我正在设置--target=x86_64-mytoolchain-linux-gnu
。相应地调整arm64。
我像这样从源代码编译clang:
mkdir build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX="/opt/clang" \
-DCMAKE_PREFIX_PATH="/opt/clang" \
-DCMAKE_BUILD_TYPE=Release \
-DGCC_INSTALL_PREFIX="/opt/gcc/" \
-DLLVM_INCLUDE_TESTS=FALSE \
-DLLVM_TARGETS_TO_BUILD="x86" \
-DLLVM_ENABLE_LTO=ON \
-DCMAKE_C_COMPILER="/opt/gcc/bin/gcc" \
-DCMAKE_CXX_COMPILER="/opt/gcc/bin/g++" \
-DCMAKE_C_FLAGS="${CFLAGS}" \
-DCMAKE_CXX_FLAGS="${CPPFLAGS}" \
-DCMAKE_C_LINK_FLAGS="${LDFLAGS}" \
-DCMAKE_CXX_LINK_FLAGS="${LDFLAGS} -L$/opt/gcc/lib64 -Wl,-rpath,$/opt/gcc/lib64"
clang -v
的输出:
clang version 9.0.1
Target: x86_64-unknown-linux-gnu
Thread model: posix
默认目标与我的自定义GCC目标不匹配。
如果不手动指定-target x86_64-mytoolchain-linux-gnu
,我将无法编译任何C ++。如果我指定它,那么它将自动查找所有适当的include和lib。一切正常。
当我从源代码编译clang时,如何指定默认情况下将使用的目标?看来我唯一的控制权是“ x86”。
结果是默认目标由LLVM在编译过程中决定。
构建LLVM时指定此:
-DLLVM_DEFAULT_TARGET_TRIPLE="x86_64-mytoolchain-linux-gnu"
现在编译clang时,clang -v的输出:
clang version 9.0.1
Target: x86_64-mytoolchain-linux-gnu
Thread model: posix