He construido versiones más nuevas de gcc para rhel6 para varias versiones ahora (desde 4.7.x hasta 5.3.1).
El proceso es bastante fácil gracias a las compilaciones de ghat de Redhat Jakub Jelinek fedora que se encuentran en koji
Simplemente tome las últimas rpm src para la versión que necesite (por ejemplo, 5.3.1 ).
Básicamente, comenzaría determinando los requisitos de compilación al rpm -qpR src.rpm
buscar cualquier requisito de versión:
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
Ahora viene la parte tediosa: cualquier paquete que tenga una versión superior a la proporcionada por yum fro su distribución debe descargarse de koji y repetir el proceso de forma recursiva hasta que se cumplan todos los requisitos de dependencia.
Hago trampa, por cierto.
Por lo general, vuelvo a empaquetar las rpm para contener un árbol de compilación correcto usando la función gnu para usar los requisitos correctamente colocados y nombrados, por lo que gmp / mpc / mpfr / isl (ya no se requiere cloog) se descargan y se desatrancan en la ruta correcta, y el nuevo (hinchado) tar se reconstruye en un nuevo src rpm (con pequeños cambios en el archivo de especificaciones) sin dependencia de sus versiones empaquetadas (rpm). Como no conozco a nadie que use ADA, simplemente elimino las porciones pertenecientes al mosquito del archivo de especificaciones, simplificando aún más el proceso de compilación, dejándome con solo binutils de los que preocuparme.
Gcc en realidad puede compilarse con binutils anteriores, por lo que si tiene prisa, edite más el archivo de especificaciones para requerir la versión binutils ya presente en su sistema. Esto dará como resultado un gcc ligeramente lisiado, pero sobre todo funcionará lo suficientemente bien.
Esto funciona bastante bien en su mayoría.
ACTUALIZACIÓN 1
El método más simple para abrir un src rpm es probablemente instalar las rpm y acceder a todo en ~ / rpmbuild, pero prefiero
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
También tiene la opción de establecer el prefijo para que este rpm se instale lado a lado sin romper las rpm de la distribución (pero requiere cambiar el nombre y algunas modificaciones a los nombres internos del paquete). Por lo general, agrego un módulo de entorno para poder cargar y descargar este gcc según sea necesario (similar a cómo funcionan las colecciones) como parte de las rpm (así que agrego una nueva dependencia).
Finalmente, cree el árbol rpmbuild y coloque los archivos donde debería ir y compile:
yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec
ACTUALIZACIÓN 2
Normalmente, uno no debe usar un sistema operativo "servidor" para el desarrollo, es por eso que tiene Fedora, que ya viene con el último gcc. Tengo algunos requisitos particulares, pero realmente debería considerar usar la herramienta adecuada para la tarea: rhel / centos para ejecutar aplicaciones de producción, fedora para desarrollar esas aplicaciones, etc.