【问题标题】:GCC toolchain for LLVMLLVM 的 GCC 工具链
【发布时间】:2014-07-03 03:07:11
【问题描述】:

我在 RHEL 6.x 机器上运行,它当然安装了 GCC 4.4。我希望在这台机器上运行 LLVM。为此,我必须从源代码编译它。为了做到这一点,我需要一个更现代的 GCC 版本。

所以,在the instructions 之后,我构建了 GCC 4.8.2:

[snip]
% $PWD/../gcc-4.8.2/configure --prefix=$HOME/toolchains --enable-languages=c,c++
% make -j$(nproc)
% make install

我以 root 身份登录,所以 $HOME/toolchains 解析为 /root/toolchains。

在满足 LLVM 的先决条件后,我已准备好配置和构建 LLVM。

root@dev06 /root/llvm-build # ~/llvm/configure --enable-optimized --prefix=$HOME/toolchains/ --with-gcc-toolchain=/root/toolchains/
checking for clang... no
[snip]
checking target architecture... x86_64
checking whether GCC is new enough... no
configure: error:
The selected GCC C++ compiler is not new enough to build LLVM. Please upgrade
to GCC 4.7. You may pass --disable-compiler-version-checks to configure to
bypass these sanity checks.
root@dev06 /root/llvm-build # 

configure 认为我仍在使用 GCC 4.4,即使我通过 --with-gcc-toolchain=/root/toolchains/ 进行配置1。让我们确保我正确安装了 4.8.2。

root@dev06 /root/llvm-build # $HOME/toolchains/bin/g++ --version
g++ (GCC) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如何说服configure 使用我在/root/toolchains 拥有的GCC?


1:我尝试了多种我在--with-gcc-toolchain 中指定的路径的变体,包括/root/toolchain/bin、/root/toolchain/bin/g++ 等。

【问题讨论】:

  • $HOME/toolchains/bin/g++ --version给你4.8.2不代表系统看到这个安装。简单的g++ --version 应该是 4.8.2。我认为您已经尝试将安装路径添加到 PATH 变量中,或者没有?如果是,顺序是否正确?
  • @mishr:但是我在configure的命令行上指定了--with-gcc-toolchain=/root/toolchains/?
  • 读者注意:做export PATH=/root/toolchains/bin/:$PATH did 让我可以干净地运行configure,但我宁愿不要到处这样做,这似乎暗示@ 987654340@ 和我想的不一样。

标签: c++ llvm configure rhel


【解决方案1】:

正如您所发现的,解决此问题的正确方法是将您的自定义工具链添加到 PATH。这不是系统范围的更改,并且仅限于您的 shell 会话。或者,您可以配置:

../llvm/configure CXX=$HOME/toolchains/bin/g++

以及configure 的--help 输出中记录的类似选项。

--with-gcc-toolchain 选项只告诉构建的 Clang 在哪里寻找 C++ 标准库和头文件,它与 LLVM/Clang 构建过程无关。我强烈建议同时构建和安装 libc++ 和 libc++abi 并将它们与您的新 Clang 一起使用。

【讨论】:

  • 啊哈,我明白了。 --with-gcc-toolchain没有按照我的想法做了。我是否正确假设即使我执行export 路径,我仍然需要指定with-gcc-toolchain 选项?
  • @John 据我了解,使用该选项会将 GCC 4.8.2 安装中的 libstdc++ 路径硬编码到 Clang 二进制文件中,这意味着它可以使用该 C++ 库而无需额外选项。所以是的,我认为这将是有用的。为了防止这种麻烦,我建议改用libc++。
  • 感谢您的建议。我将再次通读文档,以便理解它。 :)
【解决方案2】:

LLVM 项目不再支持使用 configure & make 构建。

我在变量 CC、CXX 和 FC 中指定了 c、c++ 和 fortran 编译器。

export CC=/path/to/gcc
export CXX=/path/to/g++
export FC=/path/to/gfortran

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/opt/clang ../llvm-4.0.0
make
make install

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2018-10-22
    • 2012-06-30
    • 2017-08-12
    • 2020-10-02
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    相关资源
    最近更新 更多