如何在CentOS 7 Docker上安装gcc/g++ 9(百分比:7)

1u4esq0p  于 2023-01-25  发布在  Docker
关注(0)|答案(2)|浏览(202)

为了使用C++17包括<filesystem>我需要gcc-9包在我的centos 7码头。
默认情况下,centos:7将从常规发行版库安装gcc 4.8.5。

docker run --rm -it centos:7
# yum install -y gcc
# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)

有没有什么方法可以轻松安装gcc-9(或更高版本)包(即不是从源代码构建)
谢谢!
注意:需要gcc-9才能有良好的C++17 <filesystem>支持。
GCC 9发布说明:
使用<filesystem>中的类型和函数现在不需要与-lstdc++fs链接。
源代码:https://gcc.gnu.org/gcc-9/changes.html

kqlmhetl

kqlmhetl1#

我目前掌握的情况:
cat停靠文件

FROM centos:7 AS env

RUN yum update -y
RUN yum install -y centos-release-scl
RUN yum install -y devtoolset-9

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

因此,您必须:
1.在bashrc中添加源代码
注意:Centos上的是/etc/bashrc,而Ubuntu上的是/etc/bash.bashrc
1.将Docker默认shell更新为bash,并使用--login "加载" bashrc

输出

docker build .
Sending build context to Docker daemon  4.096kB
Step 1/32 : FROM centos:7 AS env
 ---> 8652b9f0cb4c
Step 2/32 : RUN yum update -y
 ---> Using cache
 ---> a2bb269cd8dc
Step 3/32 : RUN yum install -y centos-release-scl
 ---> Using cache
 ---> 1184e26c71cf
Step 4/32 : RUN yum install -y devtoolset-9
 ---> Using cache
 ---> e678665d2a4e
Step 5/32 : RUN echo "source /opt/rh/devtoolset-9/enable" >> /etc/bashrc
 ---> Using cache
 ---> fe1745d4ca87
Step 6/32 : SHELL ["/bin/bash", "--login", "-c"]
 ---> Running in 2dd7955f4487
Removing intermediate container 2dd7955f4487
 ---> 3cf4835bf680
Step 7/32 : RUN gcc --version
 ---> Running in b5de3266d607
gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
Copyright (C) 2019 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.
 ...

什么行不通

测试1

RUN scl enable devtoolset-9 bash
RUN gcc --version | head -1

每个RUN都是一个新的shell,因此在第二行上丢失了sub-bash。

测试2

RUN source /opt/rh/devtoolset-9/enable && gcc --version | head -1
RUN gcc --version | head -1

在这里,源代码也仅用于第一个RUN shell命令,但将丢失...

测试3

这可能会起作用,但可能会出现意外行为

ENV PATH=/opt/rh/devtoolset-9/root/bin:$PATH
RUN gcc --version | head -1

这里我们只"修复"了PATH变量,但是如果您查看/opt/rh/devtoolset-9/enable脚本,那么要做的事情远远不止更新PATH ...

z4iuyo4d

z4iuyo4d2#

您可以给予使用以下步骤,如果这可能会有所帮助:从http://ftp.gnu.org/gnu/gcc/gcc-9.2.0/下载最新的软件包

wget http://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz

使用以下步骤解压缩文件:

tar -xzvf gcc-9.20.tar.gz
cd gcc-9.2.0

使用以下内容构建配置,

./configure

使用make编译安装,然后使用make install。

make 
make install

相关问题