如何在CentOS 8 docker(CentOS:最新版本)上安装gcc/g++9



为了使用C++17 include<filesystem>,我需要在我的centos docker中使用gcc-9包。

默认情况下,centos:latest(又名8(将从常规发行版repo安装gcc 8.3.1。

是否有任何PPA、测试回购等,我可以在其中轻松安装gcc-9(或更高版本(包(即不从源代码构建(

谢谢!

注意:需要gcc-9具有良好的C++17<filesystem>支持
GCC 9发布说明:

使用<filesystem>中的类型和函数现在不需要与-lstdc++fs链接。

src:https://gcc.gnu.org/gcc-9/changes.html

注2:CMake 3.16*不支持任何cxx_filesystem编译器功能AFAIK
参考: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

只需使用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

注意:source在Dockerfile中不起作用,所以更喜欢使用:

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

此命令适用于我

dnf install gcc --best --allowerasing

最新更新