Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker build无法找到G++;,手动运行步骤可以正常工作_Docker_G++_Protocol Buffers - Fatal编程技术网

Docker build无法找到G++;,手动运行步骤可以正常工作

Docker build无法找到G++;,手动运行步骤可以正常工作,docker,g++,protocol-buffers,Docker,G++,Protocol Buffers,我的映像试图在centos7基础上从源代码构建3.9.1。更新和安装依赖项后,第一步是从protobuf repo运行/configure脚本。这将遍历并找到构建所需的一系列依赖项 docker build在RUN./configure上失败,原因是检查g++。。。否。通过在失败步骤之前直接在层中执行docker run手动运行脚本时,/configure能够找到g++:检查g++。。。g++ 在docker build和手动运行这些步骤之间,有没有关于导致这种不同行为的原因的建议?谢谢你的阅读

我的映像试图在centos7基础上从源代码构建3.9.1。更新和安装依赖项后,第一步是从protobuf repo运行
/configure
脚本。这将遍历并找到构建所需的一系列依赖项

docker build
RUN./configure
上失败,原因是
检查g++。。。否
。通过在失败步骤之前直接在层中执行
docker run
手动运行脚本时,
/configure
能够找到g++:
检查g++。。。g++

docker build
和手动运行这些步骤之间,有没有关于导致这种不同行为的原因的建议?谢谢你的阅读

Docker文件:

FROM centos:7

ENV PROJECTDIR=/src
RUN mkdir -p $PROJECTDIR
WORKDIR $PROJECTDIR

RUN yum -y update && yum clean all
RUN yum install -y epel-release centos-release-scl
RUN yum install -y cmake3 devtoolset-7-gcc* devtoolset-7-gdb* llvm-toolset-7-llvm-devel llvm-toolset-7-clang-devel llvm-toolset-7-lldb make boost169-devel boost169-static openssh-server rsync git ccache autoconf automake libtool unzip tree

RUN echo 'root:root' | chpasswd
RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
RUN echo "path = /opt/rh/devtoolset-7/root/usr/bin:/opt/rh/llvm-toolset-7/root/usr/bin" > /etc/ccache.conf
RUN ln -sf ../../bin/ccache /usr/lib64/ccache/c++
RUN ln -sf ../../bin/ccache /usr/lib64/ccache/g++
RUN ln -sf ../../bin/ccache /usr/lib64/ccache/x86_64-redhat-linux-c++
RUN ln -sf ../../bin/ccache /usr/lib64/ccache/x86_64-redhat-linux-g++
RUN ln -sf ../../bin/ccache /usr/lib64/ccache/clang
RUN ln -sf ../../bin/ccache /usr/lib64/ccache/clang++
RUN /usr/sbin/sshd-keygen

# Protobuf C++ Install
RUN mkdir $PROJECTDIR/protobuf
ADD https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protobuf-cpp-3.9.1.tar.gz $PROJECTDIR/protobuf/protobuf-cpp-3.9.1.tar.gz
RUN tar -xf $PROJECTDIR/protobuf/protobuf-cpp-3.9.1.tar.gz -C $PROJECTDIR/protobuf/
WORKDIR $PROJECTDIR/protobuf/protobuf-3.9.1

RUN ./configure
    make && \
    make check && \
    make install && \
    ldconfig

RUN mkdir -p /root/.ssh

ENV PATH="$PROJECTDIR:${PATH}"

CMD bash
编辑:

我已经尝试过docker构建,无论是否使用
cacche
,都没有任何影响

,因此它应该作为依赖项安装

如果您试图使用make构建,请确保您已经安装了gcc-g++ 包裹如果没有它,您的构建将以您所看到的方式失败

在配置之前安装
gcc-c++

运行yum安装gcc-c++-y

另外,请更正配置命令,使其丢失
&&

RUN yum install gcc-c++ -y
RUN ./configure && \
    make && \
    make check && \
    make install && \
    ldconfig
缺少,因此应将其作为依赖项安装

如果您试图使用make构建,请确保您已经安装了gcc-g++ 包裹如果没有它,您的构建将以您所看到的方式失败

在配置之前安装
gcc-c++

运行yum安装gcc-c++-y

另外,请更正配置命令,使其丢失
&&

RUN yum install gcc-c++ -y
RUN ./configure && \
    make && \
    make check && \
    make install && \
    ldconfig

谢谢这解决了我的
/configure
问题,但我不确定原因。我是通过
devtoolset-7-gcc*
安装gcc-c++的,这就是我能够手动执行步骤的方式。知道这是为什么吗?是的,这不是预期的,但我用
devtoolset
面对这些问题。你看这里。如果答案能解决问题,请接受。谢谢!这解决了我的
/configure
问题,但我不确定原因。我是通过
devtoolset-7-gcc*
安装gcc-c++的,这就是我能够手动执行步骤的方式。知道这是为什么吗?是的,这不是预期的,但我用
devtoolset
面对这些问题。你看这里。如果答案能解决问题,请接受。