首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何./配置或使用多个GCC版本安装?

如何./配置或使用多个GCC版本安装?
EN

Stack Overflow用户
提问于 2017-12-15 12:13:02
回答 1查看 911关注 0票数 0

问题

除其他外,我在一个Dockerfile中有以下内容,其中安装了gcc 5.3.1和gcc 6.3.1:

代码语言:javascript
复制
FROM centos:7

RUN yum install deltarpm -y && \
    yum install -y \
        centos-release-scl \
        epel-release && \
    yum install -y \
        devtoolset-4-gcc*-5.3.1 \
        devtoolset-6-gcc*-6.3.1 \
        glibc-*-2.17

当我执行./configuremake或类似的操作时,定义使用哪个GCC版本的正确方法是什么?

我试过的

当我刚刚安装了一个devtoolset/GCC版本时,我成功地在执行PATHmake之前设置了./configureCCCXX环境变量。

代码语言:javascript
复制
# gcc 6.3.1
ENV PATH="/opt/rh/devtoolset-6/root/usr/bin:${PATH}"
ENV CC=/opt/rh/devtoolset-6/root/usr/bin/gcc
ENV CXX=/opt/rh/devtoolset-6/root/usr/bin/g++

RUN \
    cd app1 && \
    ./configure && \
    gmake && \
    gmake install

当安装了两个GCC版本时,我现在尝试了这个(结果不成功):

代码语言:javascript
复制
ENV original_path="${PATH}"

# gcc 6.3.1
ENV PATH="/opt/rh/devtoolset-6/root/usr/bin:${original_path}"
ENV CC=/opt/rh/devtoolset-6/root/usr/bin/gcc
ENV CXX=/opt/rh/devtoolset-6/root/usr/bin/g++

RUN \
    cd app1 && \
    ./configure && \
    gmake && \
    gmake install

# gcc 5.3.1
ENV PATH="/opt/rh/devtoolset-4/root/usr/bin:${original_path}"
ENV CC=/opt/rh/devtoolset-4/root/usr/bin/gcc
ENV CXX=/opt/rh/devtoolset-4/root/usr/bin/g++

RUN \
    cd app2 && \
    ./configure && \
    gmake && \
    gmake install

(部分)错误(来自于从源代码构建Qt4 ):

代码语言:javascript
复制
/opt/rh/devtoolset-4/root/usr/bin/g++ -c -pipe -O2 -I/usr/include/freetype2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_OPENGL_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include/QtGui -I../../include -I../../include/QtOpenGL -I.rcc/release-shared -I/usr/include/freetype2
-I../3rdparty/harfbuzz/src -I/usr/X11R6/include -I/usr/X11R6/include -I.moc/release-shared -o .obj/release-shared/qgl2pexvertexarray.o gl2paintengineex/qgl2pexvertexarray.cpp
/opt/rh/devtoolset-4/root/usr/bin/g++ -c -pipe -O2 -I/usr/include/freetype2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_OPENGL_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include/QtGui -I../../include -I../../include/QtOpenGL -I.rcc/release-shared -I/usr/include/freetype2
-I../3rdparty/harfbuzz/src -I/usr/X11R6/include -I/usr/X11R6/include -I.moc/release-shared -o .obj/release-shared/qpaintengineex_opengl2.o gl2paintengineex/qpaintengineex_opengl2.cpp
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
gmake[1]: *** [.obj/release-shared/qglgradientcache.o] Error 4
gmake[1]: *** Waiting for unfinished jobs....
gmake[1]: *** [.obj/release-shared/qglengineshadermanager.o] Error 4
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
gmake[1]: *** [.obj/release-shared/qpaintengineex_opengl2.o] Error 4
gmake[1]: Leaving directory `/workdir/qt/src/opengl'
gmake: *** [sub-opengl-make_default-ordered] Error 2

我也试过这个,但这个还是没用的:

代码语言:javascript
复制
# Custom environment variables
ENV original_path="${PATH}"
ENV path_gcc531="/opt/rh/devtoolset-4/root/usr/bin:${original_path}"
ENV cc_gcc531=/opt/rh/devtoolset-4/root/usr/bin/gcc
ENV cxx_gcc531=/opt/rh/devtoolset-4/root/usr/bin/g++
ENV path_gcc631="/opt/rh/devtoolset-6/root/usr/bin:${original_path}"
ENV cc_gcc631=/opt/rh/devtoolset-6/root/usr/bin/gcc
ENV cxx_gcc631=/opt/rh/devtoolset-6/root/usr/bin/g++

RUN \
    cd app1 && \
    # gcc 6.3.1
    PATH="${path_gcc631}" CC="${cc_gcc631}" CXX="${cxx_gcc631}" ./configure && \
    PATH="${path_gcc631}" CC="${cc_gcc631}" CXX="${cxx_gcc631}" gmake && \
    PATH="${path_gcc631}" CC="${cc_gcc631}" CXX="${cxx_gcc631}" gmake install

RUN \
    cd app2 && \
    # gcc 5.3.1
    PATH="${path_gcc531}" CC="${cc_gcc531}" CXX="${cxx_gcc531}" ./configure && \
    PATH="${path_gcc531}" CC="${cc_gcc531}" CXX="${cxx_gcc531}" gmake && \
    PATH="${path_gcc531}" CC="${cc_gcc531}" CXX="${cxx_gcc531}" gmake install

这会在一些构建过程中产生看似随机的错误,而这些错误在引入多个devtools/gcc安装到混合版本之前并没有出现。

据我所知,一个人应该能够在同一个系统上安装多个gcc设备:https://gcc.gnu.org/faq.html#multiple

  • 那我在这里做错什么了?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-02 13:06:30

事实证明,这是可行的:

代码语言:javascript
复制
FROM centos:7.3.1611

RUN yum install deltarpm -y && \
    yum install -y \
        centos-release-scl \
        epel-release && \
    yum install -y \
        # gcc 5.3.1 (via Devtools which is equivalent of RedHat DTS)
            devtoolset-4-gcc*-5.3.1 \
            make \
        # gcc 6.3.1 (via Devtools which is equivalent of RedHat DTS)
            devtoolset-6-gcc*-6.3.1 \
            devtoolset-6-make* \
        # glibc 2.17
            glibc-*-2.17

RUN \
    cd app1 && \
    # gcc 6.3.1
    scl enable devtoolset-6 './configure' && \
    scl enable devtoolset-6 'gmake' && \
    scl enable devtoolset-6 'gmake install'

RUN \
    cd app2 && \
    # gcc 5.3.1
    scl enable devtoolset-4 './configure' && \
    scl enable devtoolset-4 'gmake' && \
    scl enable devtoolset-4 'gmake install'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47832192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档