使用特定的 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}
一样。
我正在从源代码构建 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}
一样。