Łatwa droga
Jeśli jesteś typowym programistą, możesz zainstalować w łatwy sposób, korzystając z instrukcji podanych na stronie http://gcc.gnu.org/wiki/InstallingGCC lub menedżera pakietów systemowych, takich jak:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
Trudna droga
GCC mówi, że odpowiedź jest tutaj „trudna”, ponieważ buduje wszystko kawałek po kawałku i nie korzysta z bibliotek współdzielonych.
Infrastruktura GCC
Zdobądź infrastrukturę GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Umieść pliki do pobrania w katalogu tymczasowym (możesz użyć dowolnego katalogu).
/opt/downloads
Zbuduj infrastrukturę w katalogu tymczasowym, który różni się od katalogu pobierania lub jego podkatalogów:
/tmp/gcc
Skonfiguruj infrastrukturę za pomocą bibliotek statycznych, takich jak ta:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Flaga --disable-shared może być warta bliższego przyjrzenia się w zależności od potrzeb. Używam --disable-shared, ponieważ tworzę tylko kod statyczny i chcę się upewnić, że nie buduję żadnego udostępnionego kodu. Moją potrzebą jest łatwe przenoszenie wynikowego GCC na moje dyski, więc chcę cały kod statyczny i nie chcę żadnego wspólnego kodu. Jeśli wolisz udostępniony kod, pomiń flagę --disable-shared.
Wersje
Po uruchomieniu któregokolwiek z poleceń w tej odpowiedzi pamiętaj, aby zaktualizować polecenia, aby używały bieżącego numeru wersji GCC, który odpowiada Twoim potrzebom. Polecenia w tej odpowiedzi dotyczą GCC 4.6.2.
Zwróć uwagę, że dokumentacja GCC mówi: „Chociaż każda wystarczająco nowa wersja wymaganych narzędzi zwykle działa, wymagania dotyczące bibliotek są generalnie surowsze. Nowsze wersje mogą działać w niektórych przypadkach, ale bezpieczniej jest używać dokładnie udokumentowanych wersji”.
GMP
GMP to biblioteka arytmetyczna GNU Multiple Precision Arithmetic Library.
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 to biblioteka GNU do zaokrąglania liczb zmiennoprzecinkowych o wielokrotnej precyzji. To zależy od 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
RPP
MPC to biblioteka GNU Multiple-Precision C. To zależy od GMP i 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
ELF
ELF oznacza format wykonywalny i możliwy do połączenia. Ta biblioteka zapewnia rozmiar i obsługę endianów niezależne od architektury.
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 to kolekcja kompilatorów GNU. To zależy od GMP, MPFR, MPC i 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
Zbuduj gcc w katalogu zapasowym w tym samym punkcie montowania. (Zbudowanie go w / tmp spowodowałoby problemy z kompilacją krzyżową hosta)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
Polecenie configure i jego flagi muszą znajdować się w jednym wierszu poleceń (ten post pokazuje je w osobnych wierszach tylko ze względu na szerokość strony internetowej).
Uwaga: Używamy pełnej ścieżki do konfigurowania i nie ustawiamy zmiennych środowiskowych ścieżki biblioteki. Decydujemy się na wyłączenie ładowania początkowego i bibliotek współdzielonych, ponieważ ich nie chcemy (typowi użytkownicy mogą chcieć obu), a także używamy wątków posix i flag, które są domyślne, ponieważ ich chcemy (typowi użytkownicy mogą chcieć użyć innych wątków lub pominąć flagi domyślne). YMMV i przeczytaj o flagach tutaj
/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
Ta strona jest świetna, jeśli chodzi o informacje dotyczące instalacji GCC, jak go zbudować, różne flagi i nie tylko:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Aktualizacje
Biblioteki ppl mogą być używane do optymalizacji pamięci: zobacz bugseng.com/products/ppl/Download (dziękuję Paul w komentarzach)
Możesz uruchomić ./contrib/download_prerequisites z katalogu źródłowego gcc. (Dzięki N7P na reddit)