Yes. Building gcc11 requires gcc5.0+. Here's my Dockerfile to build gcc11 on CentOS5 64bit:
FROM centos:5
RUN rm -f /etc/yum.repos.d/*
ADD centos5-vault.repo /etc/yum.repos.d/
RUN echo /usr/local/lib > /etc/ld.so.conf.d/local.conf && echo /usr/local/lib64 >> /etc/ld.so.conf.d/local.conf
ENV PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig
ARG NUM_CPU=48
RUN yum install -y bzip2 gcc-c++ make m4 flex texinfo file pkgconfig perl expat-devel zlib-devel gettext \
which openssh-clients rsync bzip2-devel readline-devel mesa-libGLU-devel man xz patch \
libXt-devel libXtst libXrender libXi unzip libtool openssl-devel \
&& yum clean all && rm -rf /usr/share/locale
ADD clean /root/
WORKDIR /tmp
# The builtin ld is too old to work with gcc 11.2. It doesn't recognize option '-plugin'.
# binutils
COPY binutils-2.34.tar.bz2 /tmp
RUN tar xjf binutils-2.34.tar.bz2 \
&& cd binutils-2.34 && ./configure && make -j $NUM_CPU \
&& make install && /root/clean
# The builtin gcc 4.1.2 doesn't support C++11, and cannot build gcc 11.
# This can be solved with a ladder - gcc 5.5.
# gcc compilation depends on gmp, mpfr, mpc.
# gmp
COPY gmp-6.2.1.tar.bz2 /tmp
RUN tar xjf gmp-6.2.1.tar.bz2 \
&& cd gmp-6.2.1 && ./configure && make -j $NUM_CPU \
&& make install && /root/clean
# mpfr
COPY mpfr-4.1.0.tar.bz2 /tmp
RUN tar xjf mpfr-4.1.0.tar.bz2 \
&& cd mpfr-4.1.0 && ./configure && make -j $NUM_CPU \
&& make install && /root/clean
# mpc
COPY mpc-1.2.1.tar.gz /tmp
RUN tar xzf mpc-1.2.1.tar.gz \
&& cd mpc-1.2.1 && ./configure && make -j $NUM_CPU \
&& make install && /root/clean
# gcc 5.5
RUN yum install -y glibc-devel.i386 && yum clean all
COPY gcc-5.5.0.tar.gz /tmp
RUN tar xzf gcc-5.5.0.tar.gz \
&& cd gcc-5.5.0 && ./configure --enable-languages=c,c++ \
&& make -j $NUM_CPU && make install \
&& strip /usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.5.0/* || true \
&& yum remove -y binutils libstdc++-devel \
&& cd /usr/local/bin && ln -s gcc cc && /root/clean
# gcc 11.2
COPY gcc-11.2.0.tar.gz /tmp
RUN tar xzf gcc-11.2.0.tar.gz \
&& cd gcc-11.2.0 && ./configure --enable-languages=c,c++ \
&& make -j $NUM_CPU && make install \
&& strip /usr/local/libexec/gcc/x86_64-unknown-linux-gnu/11.2.0/* || true \
&& yum remove -y binutils libstdc++-devel \
&& cd /usr/local/bin && rm -f cc && ln -s gcc cc && /root/clean
# chrpath
COPY chrpath_0.16.orig.tar.gz /tmp
RUN tar xzf chrpath_0.16.orig.tar.gz \
&& cd chrpath-0.16 && ./configure && make install && /root/clean
# git
COPY git-2.35.1.tar.gz /tmp
RUN tar xzf git-2.35.1.tar.gz \
&& cd git-2.35.1 && ./configure --prefix=/usr/local && make -j $NUM_CPU \
&& make NO_INSTALL_HARDLINKS=YesPlease install && /root/clean
# cmake
COPY cmake-3.13.5.tar.gz /tmp
RUN tar xzf cmake-3.13.5.tar.gz \
&& cd cmake-3.13.5 && ./bootstrap && make -j $NUM_CPU \
&& make install && /root/clean
# The builtin wget and curl are too old to connect https sites since they don't support TLS1.3. TLS1.3 was introduced in openssl1.1.1.
# The buildin perl 5.8.8 is too old to build openssl1.1.1.
# perl
COPY perl-5.10.0.tar.gz /tmp
RUN tar xzf perl-5.10.0.tar.gz \
&& cd perl-5.10.0 \
&& ./configure.gnu && make -j $NUM_CPU && make install \
&& /root/clean
# pyhton 3.6+ ssl module requires openssl 1.1.1+
# "OpenSSL 1.1.x is not fully source compatible with OpenSSL 1.0.2." refers to
https://github.com/openssl/openssl/issues/9772.
# This means installing to /usr/local/lib may break app compilation.
COPY openssl-1.1.1m.tar.gz /tmp
RUN tar xzf openssl-1.1.1m.tar.gz \
&& cd openssl-1.1.1m \
&& ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared \
&& make -j $NUM_CPU && make install \
&& /root/clean
# packages need by python optional modules: _dbm _gdbm _lzma _sqlite3 _tkinter _uuid
# Too old: ncurses-devel sqlite-devel
# TODO: failed to build ncurses 5.4, 5.7, 5.9
RUN yum install -y gdbm-devel sqlite-devel xz-devel tk-devel libffi-devel libuuid-devel \
&& yum clean all
# sqlite
COPY sqlite-autoconf-3380000.tar.gz /tmp
RUN tar xzf sqlite-autoconf-3380000.tar.gz \
&& cd sqlite-autoconf-3380000 \
&& ./configure && make -j $NUM_CPU install \
&& /root/clean
# python 3.10
COPY Python-3.10.2.tgz /tmp
RUN tar xzf Python-3.10.2.tgz \
&& cd Python-3.10.2 && ./configure --with-openssl=/usr/local/openssl --with-openssl-rpath=auto --enable-shared && make -j $NUM_CPU \
&& make install && /root/clean
# SCons
RUN pip3 install scons -i
https://pypi.tuna.tsinghua.edu.cn/simple# autoconf
COPY autoconf-2.69.tar.gz /tmp
RUN tar xzf autoconf-2.69.tar.gz \
&& cd autoconf-2.69 \
&& ./configure && make -j $NUM_CPU install \
&& /root/clean
# automake
COPY automake-1.16.5.tar.gz /tmp
RUN tar xzf automake-1.16.5.tar.gz \
&& cd automake-1.16.5 \
&& ./configure && make -j $NUM_CPU install \
&& /root/clean
# go
COPY go1.17.8.linux-amd64.tar.gz /tmp
RUN cd /usr/local && tar xzf /tmp/go1.17.8.linux-amd64.tar.gz && /root/clean
ENV PATH=/usr/local/go/bin:$PATH