Saya telah membangun versi gcc yang lebih baru untuk rhel6 untuk beberapa versi sekarang (sejak 4.7.x hingga 5.3.1).
Prosesnya cukup mudah berkat build Redhat Jakub Jelinek fedora gcc yang ditemukan di koji
Cukup ambil src rpm terbaru untuk versi apa pun yang Anda perlukan (mis. 5.3.1 ).
Pada dasarnya Anda akan mulai dengan menentukan persyaratan pembuatan dengan menerbitkan rpm -qpR src.rpm
mencari persyaratan versi apa pun:
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
Sekarang sampai pada bagian yang membosankan - paket apa pun yang memiliki versi lebih tinggi dari yang disediakan oleh yum dari distro Anda perlu diunduh dari koji , dan ulangi proses secara rekursif sampai semua persyaratan ketergantungan dipenuhi.
Saya curang, btw.
Saya biasanya mengemas ulang rpm untuk memuat struktur pohon yang benar menggunakan fasilitas gnu untuk menggunakan persyaratan yang benar dan dinamai, jadi gmp / mpc / mpfr / isl (cloog tidak lagi diperlukan) diunduh dan tidak ke jalur yang benar, dan yang baru tar (bengkak) dibangun kembali menjadi rpm src baru (dengan sedikit perubahan pada file spesifikasi) tanpa ketergantungan pada versi paket (rpm) mereka. Karena saya tahu tidak ada yang menggunakan ADA, saya hanya menghapus bagian yang berkaitan dengan nyamuk dari specfile, lebih menyederhanakan proses pembuatan, meninggalkan saya dengan hanya binutils yang perlu dikhawatirkan.
Gcc sebenarnya dapat membangun dengan binutils yang lebih lama, jadi jika Anda sedang terburu-buru, edit specfile lebih lanjut untuk meminta versi binutils sudah ada di sistem Anda. Ini akan menghasilkan gcc yang sedikit cacat, tetapi sebagian besar akan berkinerja cukup baik.
Ini sebagian besar bekerja dengan sangat baik.
PEMBARUAN 1
Metode paling sederhana untuk membuka rpm src mungkin yum instal rpm dan akses semuanya di bawah ~ / rpmbuild, tapi saya lebih suka
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
Anda juga memiliki pilihan untuk mengatur awalan sehingga rpm ini akan menginstal berdampingan tanpa melanggar distro rpm (tetapi membutuhkan perubahan nama, dan beberapa modifikasi untuk nama paket internal). Saya biasanya menambahkan modul lingkungan sehingga saya dapat memuat dan membongkar gcc ini sesuai kebutuhan (mirip dengan cara kerja koleksi) sebagai bagian dari rpm (jadi saya menambahkan ketergantungan baru).
Terakhir, buat pohon rpmbuild dan letakkan file di mana hei harus pergi dan membangun:
yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec
PEMBARUAN 2
Biasanya orang tidak boleh menggunakan "server" os untuk pengembangan - itu sebabnya Anda memiliki fedora yang sudah dilengkapi dengan gcc terbaru. Saya memiliki beberapa persyaratan khusus, tetapi Anda harus benar-benar mempertimbangkan untuk menggunakan alat yang tepat untuk tugas - rhel / centos untuk menjalankan aplikasi produksi, fedora untuk mengembangkan aplikasi tersebut, dll.