我正在尝试基于centos7
FROM centos:centos7
RUN yum -y update
RUN yum -y install gcc
RUN gcc --version
已安装的gcc
是4.8:
步骤
4/4 : RUN gcc --version
---> Running in 70b9aa4a1f67
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)
Copyright (C) 2015 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.
如何安装gcc7?我尝试了devtools-7,它不起作用:
FROM centos:centos7
RUN yum -y update
RUN yum -y install scl-utils
RUN yum -y install devtoolset-7-gcc
RUN scl enable devtoolset-7 bash
RUN gcc --version
我知道了
Step 4/6 : RUN yum -y install devtoolset-7-gcc
---> Running in 85b49f411d4c
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
* base: mirror.imt-systems.com
* extras: mirror.23media.com
* updates: ftp.plusline.net
No package devtoolset-7-gcc available.
Error: Nothing to do
The command '/bin/sh -c yum -y install devtoolset-7-gcc' returned a non-zero code: 1
答案 0 :(得分:1)
显然,当前存储库配置中不存在devtoolset-7-gcc。尝试添加包含它的存储库,或尝试使用yum -y install centos-release-scl
代替yum -y install scl-utils
。
在这里找到它:http://blog.stevedoria.net/20180214/how-to-install-gcc-7-on-centos-7
玩得开心!
编辑:
经过更多研究后,似乎确实已经安装了gcc 7,但scl enable实际上正在打开一个新的bash,它将包含您的GCC7。如果您确实需要将GCC 7作为默认gcc,则可以从中进行编译源代码(但是需要很长时间),或者您可以使用dockerfile中的SHELL命令在各个shell之间进行切换。这是我的docker文件:
FROM centos:centos7
RUN yum -y update
RUN yum -y install centos-release-scl
RUN yum -y install devtoolset-7-gcc*
SHELL [ "/usr/bin/scl", "enable", "devtoolset-7"]
RUN gcc --version
RUN gcc --version
的输出
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
Copyright (C) 2017 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.
使用devtoolset时,在shell之间进行替换似乎是实现此目的的预期方法,因为它允许您在需要时在版本之间快速切换。 希望对您有帮助
答案 1 :(得分:1)
FROM centos:centos7
RUN yum update -y
RUN yum groupinstall "Development Tools" -y
RUN yum install wget -y
RUN curl -O https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
RUN tar xzf gcc-7.3.0.tar.gz
RUN cd gcc-7.3.0
RUN ./contrib/download_prerequisites
RUN cd ..
RUN mkdir gcc-build
RUN cd gcc-build
RUN ../gcc-7.3.0/configure \
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
--enable-clocale=gnu \
--disable-multilib \
--enable-languages=all
RUN make
# (Go make a cup of ice tea :)
RUN make install
要节省构建时间,您可以使用“ docker commit”从运行的docker创建一个新的docker,或将/ usr / local保存到tar文件,然后在其他任何新的centos7 docker上打开它。
答案 2 :(得分:0)
Dockerfile中的以下命令对我有用:
RUN yum install -y centos-release-scl
RUN yum install -y devtoolset-7-gcc-*
RUN echo "source scl_source enable devtoolset-7" >> /etc/bashrc
RUN source /etc/bashrc
答案 3 :(得分:0)
仅采购个人资料将无法正常工作。您需要使用bash -l
运行脚本。例如:
docker run --rm [YOUR IMG] bash -l [YOUR SCRIPT]
然后将启用新版本的GCC。