使用特定的 gcc 工具链从源代码构建 clang

build clang from source using specific gcc toolchain

我正在从源代码构建 clang,但使用的是不在正常位置的 gcc 7.2 构建。我希望生成的 clang++ 二进制文件默认使用此工具链。我尝试这样做:

$ export GCC_PREFIX=/path/to/gcc/7.2
$ mkdir -p build
$ cd build
$ cmake -G Ninja -DCMAKE_C_COMPILER=${GCC_PREFIX}/bin/gcc \
     -DCMAKE_CXX_COMPILER=${GCC_PREFIX}/bin/g++ \
     -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_TARGETS_TO_BUILD=X86 ..

但是生成的构建只是在 /usr/include/c++/4.8.5 中查找标准库,而不是像我想要的那样 /path/to/gcc/7.2/include(而且,正如路径所暗示的那样,4.8.5 有点旧)。有没有一种方法可以构建 clang,使得生成的二进制文件将搜索我想要的包含目录的路径?

注意,我知道我 运行 使用 --gcc-toolchain=${GCC_PREFIX} 生成了 binary。这样可行。我想做的是将其构建到二进制文件中,这样我就不必每次都输入它。

刚找到这个。正确的做法是提供 GCC_INSTALL_PREFIX:

$ cmake -G Ninja -DCMAKE_C_COMPILER=${GCC_PREFIX}/bin/gcc \
     -DCMAKE_CXX_COMPILER=${GCC_PREFIX}/bin/g++ \

     -DGCC_INSTALL_PREFIX=${GCC_PREFIX} \

     -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_TARGETS_TO_BUILD=X86 ..

这样做是对的。生成的 clang 二进制文件的行为就像您根据需要提供 --gcc-toolchain=${GCC_PREFIX} 一样。