程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在 CentOS 7 docker (centos:7) 上安装 gcc/g++ 9 测试 1测试 2测试 3大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何在 CentOS 7 docker (centos:7) 上安装 gcc/g++ 9 测试 1测试 2测试 3?

开发过程中遇到如何在 CentOS 7 docker (centos:7) 上安装 gcc/g++ 9 测试 1测试 2测试 3的问题如何解决?下面主要结合日常开发的经验,给出你关于如何在 CentOS 7 docker (centos:7) 上安装 gcc/g++ 9 测试 1测试 2测试 3的解决方法建议,希望对你解决如何在 CentOS 7 docker (centos:7) 上安装 gcc/g++ 9 测试 1测试 2测试 3有所启发或帮助;

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

默认情况下,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

解决方法

到目前为止我所拥有的:

cat Dockerfile

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

  2. 将 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","-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...

@H_616_102@

大佬总结

以上是大佬教程为你收集整理的如何在 CentOS 7 docker (centos:7) 上安装 gcc/g++ 9 测试 1测试 2测试 3全部内容,希望文章能够帮你解决如何在 CentOS 7 docker (centos:7) 上安装 gcc/g++ 9 测试 1测试 2测试 3所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。