Der einfache Weg
Wenn Sie ein typischer Entwickler sind, können Sie die Installation auf einfache Weise anhand der Anweisungen unter http://gcc.gnu.org/wiki/InstallingGCC oder Ihres Systempaket-Managers durchführen, z.
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
Der harte Weg
Laut GCC ist die Antwort hier "der harte Weg", da alles Stück für Stück erstellt wird und keine gemeinsam genutzten Bibliotheken verwendet werden.
GCC-Infrastruktur
Holen Sie sich die GCC-Infrastruktur:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Legen Sie Downloads in einem temporären Verzeichnis ab (Sie können jedes gewünschte Verzeichnis verwenden).
/opt/downloads
Erstellen Sie die Infrastruktur in einem temporären Verzeichnis, das sich vom Download-Verzeichnis oder seinen Unterverzeichnissen unterscheidet:
/tmp/gcc
Konfigurieren Sie die Infrastruktur mit statischen Bibliotheken wie folgt:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
Das Flag --disable-shared kann je nach Ihren Anforderungen einen genaueren Blick wert sein. Ich verwende --disable-shared, weil ich nur statischen Code erstelle und sicherstellen möchte, dass ich keinen gemeinsam genutzten Code erstelle. Ich muss das resultierende GCC einfach auf meinen Laufwerken verschieben, damit ich den gesamten statischen Code und keinen gemeinsam genutzten Code möchte. Wenn Sie gemeinsam genutzten Code bevorzugen, lassen Sie das Flag --disable-shared weg.
Versionen
Wenn Sie einen der Befehle in dieser Antwort ausführen, müssen Sie die Befehle aktualisieren, um die aktuelle GCC-Versionsnummer zu verwenden, die Ihren Anforderungen entspricht. Die Befehle in dieser Antwort beziehen sich auf GCC 4.6.2.
Beachten Sie, dass in der GCC-Dokumentation Folgendes angegeben ist: "Während normalerweise jede ausreichend neue Version der erforderlichen Tools funktioniert, sind die Bibliotheksanforderungen im Allgemeinen strenger. In einigen Fällen funktionieren möglicherweise neuere Versionen, es ist jedoch sicherer, die genauen dokumentierten Versionen zu verwenden."
GMP
GMP ist die 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 ist die GNU-Gleitkomma-Rundungsbibliothek mit mehrfacher Genauigkeit. Es hängt von GMP ab.
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 ist die GNU C-Bibliothek mit mehrfacher Genauigkeit. Dies hängt von GMP und MPFR ab.
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 steht für Executable and Linkable Format. Diese Bibliothek bietet architekturunabhängige Unterstützung für Größe und 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 ist die GNU Compiler Collection. Dies hängt von GMP, MPFR, MPC und ELF ab.
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
Erstellen Sie gcc in einem Arbeitsverzeichnis auf demselben Einhängepunkt. (Das Erstellen in / tmp würde Cross-Compile-Host-Probleme auslösen.)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
Der Befehl configure und seine Flags müssen sich alle in einer Befehlszeile befinden (in diesem Beitrag werden sie nur aufgrund der Breite der Webseite in separaten Zeilen angezeigt).
Hinweis: Wir verwenden den vollständigen Pfad, um Umgebungsvariablen für Bibliothekspfade zu konfigurieren und nicht festzulegen. Wir entscheiden uns, Bootstrap zu deaktivieren und gemeinsam genutzte Bibliotheken zu deaktivieren, weil wir sie nicht möchten (typische Benutzer möchten möglicherweise beides), und Posix-Threads und Flags zu verwenden, die Standardwerte sind, weil wir sie möchten (typische Benutzer möchten möglicherweise andere Threads verwenden oder überspringen Standardflags). YMMV und lesen Sie über die Fahnen hier
/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
Diese Seite ist ideal für Informationen zur GCC-Installation, zum Erstellen, zu verschiedenen Flags und mehr:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Aktualisierung
Die ppl-Bibliotheken können für Speicheroptimierungen verwendet werden: siehe bugseng.com/products/ppl/Download (Danke Paul in den Kommentaren)
Sie können ./contrib/download_prerequisites aus dem gcc-Quellverzeichnis ausführen. (Danke an N7P auf reddit)