Birkaç sürüm için rhel6 için daha yeni gcc sürümleri oluşturdum (4.7.x'ten 5.3.1'e kadar).
Kohat'ta bulunan Redhat'ın Jakub Jelinek fedora gcc yapıları sayesinde süreç oldukça kolay
İhtiyacınız olan sürüm için en son src rpm'yi almanız yeterlidir (örneğin 5.3.1 ).
Temel olarak rpm -qpR src.rpm
, herhangi bir sürüm gereksinimi arayarak derleme gereksinimlerini belirleyerek başlayacaksınız :
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
Şimdi sıkıcı kısmı geliyor - dağıtımınız için yum tarafından sağlanandan daha yüksek bir sürüme sahip herhangi bir paketin koji'den indirilmesi gerekiyor ve tüm bağımlılık gereksinimleri karşılanana kadar işlemi tekrarlayın.
Hile yapıyorum, btw.
Genellikle rpm'yi doğru yerleştirilmiş ve adlandırılmış gereksinimleri kullanmak için gnu tesisini kullanarak doğru bir yapı ağacı içerecek şekilde yeniden paketlerim, böylece gmp / mpc / mpfr / isl (cloog artık gerekli değildir) indirilir ve doğru yola indirilir ve yeni (şişirilmiş) katran, paketlenmiş (rpm) sürümlerine bağımlı olmadan yeni bir src rpm (spec dosyasında küçük değişikliklerle) olarak yeniden oluşturulur. ADA kullanan kimseyi bilmediğimden, sadece gnat ile ilgili kısımları specfile'dan çıkarıyorum, inşa sürecini daha da basitleştirerek endişelenmem için sadece binutils bırakıyorum.
Gcc aslında eski binutils ile oluşturabilir, bu yüzden aceleniz varsa, sisteminizde binutils sürümünün mevcut olmasını gerektirecek şekilde specfile'ı daha fazla düzenleyin. Bu hafif sakatlanmış bir gcc ile sonuçlanacaktır, ancak çoğunlukla yeterince iyi performans gösterecektir.
Bu çoğunlukla oldukça iyi çalışıyor.
GÜNCELLEME 1
Bir src rpm açmak için en basit yöntem muhtemelen rpm yüklemek ve ~ / rpmbuild altındaki her şeye erişmek, ama tercih ederim
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
Ayrıca öneki ayarlama seçeneğiniz de vardır; böylece bu rpm, dağıtım rpm'sini bozmadan yan yana yüklenir (ancak adın değiştirilmesi ve dahili paket adlarında bazı değişiklikler yapılması gerekir). Genellikle bir ortam modülü eklerim, böylece rpm'nin bir parçası olarak bu gcc'yi (koleksiyonların nasıl çalıştığına benzer şekilde) yükleyebilir ve boşaltabilirim (böylece yeni bir bağımlılık ekliyorum).
Son olarak rpmbuild ağacını oluşturun ve dosyaları gidip oluşturması gereken yere yerleştirin:
yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec
GÜNCELLEME 2
Normalde geliştirme için bir "sunucu" işletim sistemi kullanılmamalıdır - bu yüzden zaten en son gcc ile gelen fedora var. Bazı özel gereksinimlerim var, ancak gerçekten görev için doğru aracı kullanmayı düşünmelisiniz - üretim uygulamalarını çalıştırmak için rhel / centos, bu uygulamaları geliştirmek için fedora vb.