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

时间:2017-12-09 22:54:40

标签: gcc clang clang++ llvm-clang

我是从源代码构建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}运行生成的二进制文件。这样可行。我想要做的是将其构建到二进制文件中,这样我就不必每次都输入它。

1 个答案:

答案 0 :(得分:3)

刚发现这个。正确的方法是提供$ 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 ..

--gcc-toolchain=${GCC_PREFIX}

这是对的。生成的clang二进制文件的行为就像您根据需要提供Name一样。