Eu construí versões mais recentes do gcc para rhel6 para várias versões agora (desde 4.7.x para 5.3.1).
O processo é bastante fácil graças ao builds do fedora gcc encontrados no koji
Simplesmente pegue o último src rpm para qualquer versão que você necessite (por exemplo, 5.3.1 ).
Basicamente, você começaria determinando os requisitos de criação emitindo rpm -qpR src.rpm
procurando por qualquer requisito de versão:
rpm -qpR gcc-5.3.1-4.fc23.src.rpm | grep -E '= [[:digit:]]'
binutils >= 2.24
doxygen >= 1.7.1
elfutils-devel >= 0.147
elfutils-libelf-devel >= 0.147
gcc-gnat >= 3.1
glibc-devel >= 2.4.90-13
gmp-devel >= 4.1.2-8
isl = 0.14
isl-devel = 0.14
libgnat >= 3.1
libmpc-devel >= 0.8.1
mpfr-devel >= 2.2.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
systemtap-sdt-devel >= 1.3
Agora vem a parte tediosa - qualquer pacote que tenha uma versão maior do que a fornecida por yum fro sua distro precisa ser baixada de koji e repita recursivamente o processo até que todos os requisitos de dependência sejam atendidos.
Eu faço batota, btw.
Eu costumo reembalar o rpm para conter uma árvore de compilação correta usando o recurso gnu para usar os requisitos corretamente colocados e nomeados, portanto gmp / mpc / mpfr / isl (o cloog não é mais necessário) são baixados e desmarcados no caminho correto, e o novo O tar (inchado) é reconstruído em um novo src rpm (com pequenas alterações no arquivo de especificação) sem dependência de suas versões empacotadas (rpm).
Como não conheço ninguém usando o ADA, simplesmente removo as partes referentes ao mosquito do specfile, simplificando ainda mais o processo de compilação, deixando-me apenas com binutils para se preocupar.
O Gcc pode realmente construir com binutils mais antigos, então se você estiver com pressa, edite o specfile para requerer a versão binutils já presente no seu sistema. Isso resultará em um gcc ligeiramente danificado, mas na maioria das vezes ele terá um bom desempenho.
Isso funciona muito bem principalmente.
UPDATE 1
O método mais simples para abrir um rpm src é provavelmente yum instalar o rpm e acessar tudo em ~ / rpmbuild, mas eu prefiro
mkdir gcc-5.3.1-4.fc23
cd gcc-5.3.1-4.fc23
rpm2cpio ../gcc-5.3.1-4.fc23.src.rpm | cpio -id
tar xf gcc-5.3.1-20160212.tar.bz2
cd gcc-5.3.1-20160212
contrib/download_prerequisites
cd ..
tar caf gcc-5.3.1-20160212.tar.bz2 gcc-5.3.1-20160212
rm -rf gcc-5.3.1-20160212
# remove gnat
sed -i '/%global build_ada 1/ s/1/0/' gcc.spec
sed -i '/%if !%{build_ada}/,/%endif/ s/^/#/' gcc.spec
# remove gmp/mpfr/mpc dependencies
sed -i '/BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1/ s/.*//' gcc.spec
# remove isl dependency
sed -i '/BuildRequires: isl = %{isl_version}/,/Requires: isl-devel = %{isl_version}/ s/^/#/' gcc.spec
# Either build binutils as I do, or lower requirements
sed -i '/Requires: binutils/ s/2.24/2.20/' gcc.spec
# Make sure you don't break on gcc-java
sed -i '/gcc-java/ s/^/#/' gcc.spec
Você também tem a opção de definir o prefixo para que este rpm seja instalado lado a lado sem interromper o rpm da distribuição (mas requer a alteração do nome e algumas modificações nos nomes dos pacotes internos). Eu costumo adicionar um módulo de ambiente para que eu possa carregar e descarregar esse gcc conforme necessário (semelhante a como as coleções funcionam) como parte do rpm (para adicionar uma nova dependência).
Finalmente, crie a árvore rpmbuild e coloque os arquivos que devem ser criados:
yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec
UPDATE 2
Normalmente não se deve usar um "servidor" para desenvolvimento - é por isso que você tem o fedora que já vem com o mais recente gcc.
Eu tenho alguns requisitos particulares, mas você deve realmente considerar usar a ferramenta certa para a tarefa - rhel / centos para executar aplicativos de produção, fedora para desenvolver esses aplicativos, etc.