Dockerfile构建镜像,期间需要安装gcc, g++和cmake,使用以下命令安装:
# 安装gcc相关(这句可以正常运行)
RUN yum install -y devtoolset-9-build devtoolset-9-gdb devtoolset-9-gcc devtoolset-9-gcc-c++ make \
&& scl enable devtoolset-9 bash && source /opt/rh/devtoolset-9/enable \
&& gcc --version && g++ --version
# 安装cmake
RUN cd ${workdir}/cmake-3.24.1 && ./bootstrap --prefix=/usr/local && make -j4 && make install
构建安装gcc相关
的步骤时,没有错误发生,而且在这一步已经把gcc 9 enable了,gcc和g++ version的信息也打印出来了
但是执行到安装cmake
步骤时,却显示以下的错误:
Error when bootstrapping CMake:
Cannot find appropriate C compiler on this system.
Please specify one using environment variable CC.
See cmake_bootstrap.log for compilers attempted.
提示的说明是找不到gcc,但是上一步骤已经显示gcc/g++已经安装成功了,这是为什么呢?后来找RUN
命令的用法的时候,看到了这篇博文:Dockerfile实践指南之RUN命令使用,里面提到每次RUN
都是新建一个新层,可能就是不同层间还不能互通的?所以后来试着在安装cmake
步骤下添加source /opt/rh/devtoolset-9/enable
,再build,发现问题解决了,即:
# 安装cmake
RUN source /opt/rh/devtoolset-9/enable && cd ${workdir}/cmake-3.24.1 && ./bootstrap --prefix=/usr/local && make -j4 && make install