如何在CentOS 8 Docker (centos:latest)上安装gcc/g++ 9

3
为了使用C++17中的<filesystem>,我需要在我的CentOS Docker中安装gcc-9软件包。
默认情况下,centos:latest(也就是8)将从常规的发行版仓库安装gcc 8.3.1。
是否有任何PPA、测试仓库或其他地方可以轻松安装gcc-9(或更高版本)软件包(即不必从源代码构建)?
谢谢!
注:需要gcc-9才能支持良好的C++17<filesystem>支持。 GCC 9发布说明:
使用<filesystem>中的类型和函数现在不需要链接与-lstdc++fs了。
来源:https://gcc.gnu.org/gcc-9/changes.html

注意2:据我所知,CMake 3.16*不支持任何cxx_filesystem编译器特性。
参考:https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html

注意3:您可以在此处找到日志:https://github.com/Mizux/KalistoUnpacker/runs/642516660?check_suite_focus=true


你知道devtoolset-9吗? - Thomas Sablik
谢谢!我想我很久以前用过它,但是忘记了。我会试一试的! - Mizux
@ThomasSablik 找不到在Centos 8上安装它的方法,与拥有scl和devtoolset软件包的Centos 7相反。 - Mizux
你需要解决的根本问题是什么? - Thorbjørn Ravn Andersen
@ThorbjørnRavnAndersen 我只想安装g++ 9,因为默认g++(8.3.1)不提供<filesystem>(无需使用链接器标志来污染我的cmake)。 - Mizux
显示剩余2条评论
2个回答

15

只需使用dnf

dnf -y install gcc-toolset-9-gcc gcc-toolset-9-gcc-c++
source /opt/rh/gcc-toolset-9/enable

参考:https://centos.pkgs.org/8/centos-appstream-x86_64/gcc-toolset-9-gcc-9.1.1-2.4.el8.x86_64.rpm.html

注意:在Dockerfile中,source命令无法正常工作,请使用以下命令:

ENV PATH=/opt/rh/gcc-toolset-9/root/usr/bin:$PATH

更好地

RUN dnf -y install gcc-toolset-9-gcc gcc-toolset-9-gcc-c++

RUN echo "source /opt/rh/gcc-toolset-9/enable" >> /etc/bashrc
SHELL ["/bin/bash", "--login", "-c"]
RUN gcc --version

0

这个命令对我有效

dnf install gcc --best --allowerasing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接