Cara Mudah
Jika Anda seorang pengembang biasa, Anda dapat menginstal dengan cara mudah, menggunakan petunjuk di http://gcc.gnu.org/wiki/InstallingGCC atau manajer paket sistem Anda seperti:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
Cara yang Sulit
GCC mengatakan jawabannya di sini adalah "cara yang sulit" karena GCC membangun semua bagian demi bagian, dan tidak menggunakan pustaka bersama.
Infrastruktur GCC
Dapatkan infrastruktur GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Letakkan unduhan di direktori temp (Anda dapat menggunakan direktori apa pun yang Anda inginkan).
/opt/downloads
Bangun infrastruktur di direktori temp yang berbeda dari direktori unduhan atau subdirektorinya:
/tmp/gcc
Konfigurasikan infrastruktur menggunakan pustaka statis seperti ini:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Bendera --disable-shared mungkin perlu dilihat lebih dekat tergantung pada kebutuhan Anda. Saya menggunakan --disable-shared karena saya hanya membuat kode statis, dan saya ingin memastikan bahwa saya tidak membuat kode bersama. Kebutuhan saya adalah memindahkan GCC yang dihasilkan di sekitar drive saya dengan mudah, jadi saya ingin semua kode statis, dan saya tidak ingin kode bersama. Jika Anda lebih suka kode bersama, hilangkan tanda --disable-shared.
Versi
Saat Anda menjalankan salah satu perintah dalam jawaban ini, pastikan untuk memperbarui perintah untuk menggunakan nomor versi GCC saat ini yang sesuai dengan kebutuhan Anda. Perintah dalam jawaban ini adalah untuk GCC 4.6.2.
Perhatikan bahwa dokumentasi GCC menyatakan: "Meskipun versi yang cukup baru dari alat yang diperlukan biasanya berfungsi, persyaratan pustaka biasanya lebih ketat. Versi yang lebih baru dapat berfungsi dalam beberapa kasus, tetapi lebih aman menggunakan versi persis yang didokumentasikan."
GMP
GMP adalah Perpustakaan Aritmatika Presisi Ganda GNU.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
MPFR
MPFR adalah library pembulatan floating-point presisi ganda GNU. Itu tergantung GMP.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install
MPC
MPC adalah pustaka C presisi-berganda GNU. Itu tergantung GMP dan MPFR.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install
PERI
ELF adalah singkatan dari Executable and Linkable Format. Library ini menyediakan ukuran yang tidak bergantung pada arsitektur dan dukungan endian.
wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
GCC
GCC adalah Koleksi Kompilator GNU. Itu tergantung GMP, MPFR, MPC, dan ELF.
wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz
Bangun gcc di direktori awal pada titik pemasangan yang sama. (Membangunnya di dalam / tmp akan memicu masalah host kompilasi silang)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
Perintah konfigurasi dan benderanya harus semuanya dalam satu baris perintah (posting ini menunjukkannya pada baris terpisah hanya karena lebar halaman web).
Catatan: Kami menggunakan jalur lengkap untuk mengonfigurasi dan tidak menyetel variabel lingkungan jalur perpustakaan. Kami memilih untuk menonaktifkan bootstrap dan menonaktifkan pustaka bersama karena kami tidak menginginkannya (pengguna biasa mungkin menginginkan keduanya), dan menggunakan utas posix dan menandai yang default karena kami menginginkannya (pengguna biasa mungkin ingin menggunakan utas lain atau melewati bendera default). YMMV dan baca tentang bendera di sini
/opt/downloads/gcc-4.6.2/configure
--disable-shared
--disable-bootstrap
--disable-libstdcxx-pch
--enable-languages=all
--enable-libgomp
--enable-lto
--enable-threads=posix
--enable-tls
--with-gmp=/tmp/gcc
--with-mpfr=/tmp/gcc
--with-mpc=/tmp/gcc
--with-libelf=/tmp/gcc
--with-fpmath=sse
make && make install
Halaman ini bagus untuk info penginstalan GCC, cara membuatnya, berbagai flag, dan banyak lagi:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Pembaruan
Pustaka ppl dapat digunakan untuk pengoptimalan memori: lihat bugseng.com/products/ppl/Download (Terima kasih Paul di komentar)
Anda dapat menjalankan ./contrib/download_prerequisites dari direktori sumber gcc. (Terima kasih untuk N7P di reddit)
--disable-shared
salah bagi kebanyakan orang,--disable-bootstrap
mungkin mempercepat build, tetapi dapat menyebabkannya gagal bergantung pada versi gcc yang ada, tetap--enable-libgomp
diaktifkan secara default,--enable-lto
diaktifkan secara default,--enable-thread-safe
bukan opsi yang valid,--enable-threads=posix
diaktifkan secara default di beberapa platform, tidak valid di platform lain ,--enable-tls
diaktifkan secara default, ... pada dasarnya instruksi ini sangat burukbrew install gcc
. Lihat linuxbrew.shJawaban yang diterima membuatnya jauh lebih rumit dari yang diperlukan dan tidak benar untuk semua versi. Membangun GCC dengan
--disable-shared
biasanya merupakan ide yang sangat buruk. Lihat http://gcc.gnu.org/wiki/InstallingGCC untuk pendekatan yang lebih mudah.The seluruh proses harus tidak lebih sulit daripada ini (menggantikan 4.6.2 dengan versi Anda ingin membangun):
(Tapi tolong baca tautan di atas, ini berisi informasi yang berguna.)
Rupanya beberapa orang di Ubuntu memiliki banyak sekali omong kosong di lingkungan mereka yang mengganggu proses pembuatan GCC, dan mereka perlu menghapusnya terlebih dahulu:
sumber
unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH
sebelum yang lainnya seperti yang disarankan di sini: stackoverflow.com/questions/12255058/…Saya bekerja di sebuah cluster. Hanya node master yang terhubung ke Internet. Perangkat lunak pada node sudah usang dan umumnya tidak terawat. Saya tidak memiliki akses root. Saya punya dua pilihan:
Saya memilih yang kedua dan membangun gcc, g ++ dan gfortran.
Saya membangun semuanya
dan untuk
make
saya duluDi bawah ini, gcc dibuat dengan
Seseorang bisa mendapatkan gcc terbaru dari sini: ftp://gcc.gnu.org/pub/gcc/releases
Dependensi ditemukan di sini: ftp://gcc.gnu.org/pub/gcc/infrastructure
Dependensi
Saya mendapatkan ketergantungan dengan skrip berikut:
Fungsi bash berikut digunakan di bawah ini:
Setiap perintah di bawah ini akan dikeluarkan di direktori lib yang baru saja diunduh.
GMP
MPFR
MPC
ISL
CLOOG
gcc
sumber
LD_LIBRARY_PATH
untuk menggunakan GCC yang dihasilkan.Menggunakan apa yang disebutkan Jonathan di atas kecuali bahwa saya harus mengunduh gmp dan mpfr secara manual dan membuat tautan lunak (distribusi gcc 4.4.2 mungkin tidak memiliki "download_prerequisites")
Btw, menggunakan "-with-gmp" dan "with-mpfr" dengan "./configure" give me "configure: error: tidak dapat menghitung akhiran file objek: tidak dapat mengkompilasi". Karenanya saya mengunduh srcs dari gmp dan mpfr dan kemudian membuat tautan lunak untuk itu dari dalam gcc src top leve dir
sumber
Setelah mencoba menginstal dependensi GCC termasuk GMP, MPFR, dan MPC. Saya menemukan persyaratan penginstalan tambahan, Kesalahan dan file yang hilang; seperti file header gmp.h yang diperlukan oleh MPFR untuk diinstal. Ada banyak masalah yang akan Anda hadapi dalam prosesnya. Namun, Ada cara yang Lebih Mudah untuk Membangun dan Menginstal GCC-X.0.0 atau versi yang lebih baru dengan penautan otomatis .
OPSI SATU.
Untuk menghindari masalah Membangun dengan make, install dan Hubungkan pustaka dinamis, Cukup:
Unduh versi GCC-X.0.0 Anda (dengan versi terbaru dari: https://gcc.gnu.org/ )
Ekstrak file gcc-X-000.tar.gz ke lokasi / somepath /.
Setelah Anda mengekstrak file .tar.gz, jalankan skrip ./contrib/download_prerequisites yang terletak di / somepath / atau direktori sumber.
Skrip ini akan mengunduh pustaka pendukung termasuk: GMP, MPFR dan MPC dan akan membuat Symlinks untuk Anda, yang akan MEMBANGUN semua dependensi gcc secara otomatis sebagai bagian dari proses Instalasi gcc.
Tidak perlu Membangun dan Menghubungkan pustaka dukungan yang telah diunduh ke / somepath / dengan menerbitkan Make, Make Install atau menjalankan ./configure file atau menambahkan link seperti --with-gmp = / gmp_path / ... / ..... , --with-mpfr = / mpfr_path / ... / ... karena ini dilakukan ketika Anda menjalankan skrip yang membuat symlink .
OPSI DUA.
KONFIGURASI:
Isu:
NB:
--enable-language seperti c ++ atau c.
--disable-multilib ; nonaktifkan multilib berdasarkan sistem dan OS Anda, Anda akan ditanya tentang multilib untuk melanjutkan.
Proses pembuatan akan memakan waktu lama. Namun, Anda dapat mengeluarkan opsi -j #no_pro. Ini akan menjalankan Make secara bersamaan secara paralel berdasarkan jumlah prosesor di PC atau Mac Anda.
Untuk informasi rinci tentang cara menjalankan proses ini, Anda dapat mengunjungi: https://gcc.gnu.org/wiki/InstallingGCC .
sumber
Saya mengikuti jawaban yang paling diterima oleh joelparkerhenderson. Ini adalah jawaban terbaik yang dapat saya temukan untuk menginstal pada sistem * NIX melalui internet.
Untuk anak cucu saya ingin menambahkan bahwa jika Anda mendapatkan kesalahan seperti "kesalahan pemasangan: tidak dapat menghitung akhiran file objek: tidak dapat mengkompilasi"
lalu perbarui LD_LIBRBARY_PATH Anda dengan / tmp / gcc / lib (Lihat jawaban lengkap joelparkerhenderson untuk konteksnya)
/ tmp / gcc / lib berisi semua mpfr / mpc / gmp yang diperlukan sehingga file dan run time linker tidak dapat menemukannya kecuali Anda menambahkannya ke LD_LIBRARY_PATH. Juga jangan lupa untuk mengekspor LD_LIBRARY_PATH;). Konteks lebih lanjut di sini: https://gcc.gnu.org/wiki/FAQ#configure_suffix
sumber