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)
--disable-shared
ist für die meisten Benutzer falsch,--disable-bootstrap
kann den Build beschleunigen, kann jedoch je nach vorhandener gcc-Version zum Fehlschlagen führen, ist--enable-libgomp
ohnehin standardmäßig--enable-lto
aktiviert, standardmäßig aktiviert,--enable-thread-safe
keine gültige Option,--enable-threads=posix
auf einigen Plattformen standardmäßig aktiviert, auf anderen nicht gültig ,--enable-tls
standardmäßig aktiviert, ... im Grunde sind diese Anweisungen ziemlich schlechtbrew install gcc
. Siehe linuxbrew.shDie akzeptierte Antwort macht es weitaus komplizierter als nötig und ist nicht für alle Versionen korrekt. Das Erstellen von GCC mit
--disable-shared
ist normalerweise eine sehr schlechte Idee. Eine einfachere Vorgehensweise finden Sie unter http://gcc.gnu.org/wiki/InstallingGCC .Der gesamte Prozess sollte nicht schwieriger sein (Ersetzen von 4.6.2 durch die Version, die Sie erstellen möchten):
(Bitte lesen Sie trotzdem den obigen Link, er enthält nützliche Informationen.)
Anscheinend haben einige Leute auf Ubuntu Tonnen von Mist in ihrer Umgebung, der den GCC-Erstellungsprozess stört, und sie müssen diesen zuerst entfernen:
quelle
unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE LD_LIBRARY_PATH
vor allem anderen, wie hier vorgeschlagen, musste: stackoverflow.com/questions/12255058/…Ich arbeite an einem Cluster. Nur der Masterknoten ist mit dem Internet verbunden. Die Software auf Knoten ist veraltet und wird im Allgemeinen nicht gewartet. Ich habe keinen Root-Zugriff. Ich habe zwei Möglichkeiten:
Ich entschied mich für die zweite und baute gcc, g ++ und gfortran.
Ich habe alles eingebaut
und für
make
mich verwendetUnten wird gcc mit gebaut
Den neuesten gcc erhalten Sie hier: ftp://gcc.gnu.org/pub/gcc/releases
Abhängigkeiten finden Sie hier: ftp://gcc.gnu.org/pub/gcc/infrastructure
Abhängigkeiten
Ich erhalte Abhängigkeiten mit dem folgenden Skript:
Die folgende Bash-Funktion wird unten verwendet:
Jeder der folgenden Befehle muss im Verzeichnis der gerade heruntergeladenen Bibliothek ausgegeben werden.
GMP
MPFR
MPC
ISL
CLOOG
gcc
quelle
LD_LIBRARY_PATH
, dass das resultierende GCC verwendet wird.Verwendet, was Jonathan oben erwähnt hat, außer dass ich gmp und mpfr manuell herunterladen und einen Softlink erstellen musste (die gcc 4.4.2-Distribution hat wahrscheinlich keine "download_prerequisites")
Übrigens gab die Verwendung von "-with-gmp" und "with-mpfr" mit "./configure" mir "configure: error: Suffix von Objektdateien kann nicht berechnet werden: Kompilieren nicht möglich". Daher habe ich die srcs von gmp und mpfr heruntergeladen und dann den Softlink dazu aus gcc src top leve dir erstellt
quelle
Nach dem Versuch, GCC-Abhängigkeiten wie GMP, MPFR und MPC zu installieren . Ich bin auf zusätzliche Installationsanforderungen, Fehler und fehlende Dateien gestoßen. B. die von MPFR für die Installation erforderliche gmp.h-Headerdatei. Es gibt eine Reihe von Problemen, auf die Sie dabei stoßen werden. Allerdings gibt es einen einfacheren Weg zu bauen und zu installieren GCC-X.0.0 oder später Version mit automatischer Verlinkung .
OPTION EINS.
Um die Probleme beim Erstellen mit make zu vermeiden, müssen Sie die dynamischen Bibliotheken installieren und verknüpfen. Einfach:
Laden Sie Ihre GCC-X.0.0-Version herunter (mit der neuesten Version von: https://gcc.gnu.org/ )
Extrahieren Sie die Dateien gcc-X-000.tar.gz an einen Speicherort / somepath /.
Wenn Sie die Datei .tar.gz extrahiert haben, führen Sie das Skript ./contrib/download_prerequisites aus, das sich im Verzeichnis / somepath / oder im Quellverzeichnis befindet.
Dieses Skript Support - Bibliotheken herunterladen einschließlich: GMP, MPFR und MPC und ein erstellen Symlinks für Sie, das wird BUILD alle gcc Abhängigkeiten automatisch als Teil des gcc Installationsprozesses.
Es ist nicht erforderlich, Unterstützungsbibliotheken zu erstellen und zu verknüpfen , die in / somepath / heruntergeladen wurden, indem Sie Make, Make Install oder die Datei ./configure ausgeben oder Links wie --with-gmp = / gmp_path / ... / ..... hinzufügen. , --with-mpfr = / mpfr_path / ... / ... weil dies getan wurde, als Sie ein Skript ausgeführt haben, das Symlinks erstellt hat .
OPTION ZWEI.
AUFBAU:
Problem:
NB:
- Enable-Sprachen wie c ++ oder c.
--disable-multilib ; Wenn Sie Multilib basierend auf Ihrem System und Betriebssystem deaktivieren, werden Sie aufgefordert, mit Multilib fortzufahren.
Das Erstellen von Make wird lange dauern. Sie können jedoch die Option -j #no_pro ausgeben. Dadurch wird Make parallel ausgeführt, basierend auf der Anzahl der Prozessoren auf Ihrem PC oder Mac.
Ausführliche Informationen zum Ausführen dieses Prozesses finden Sie unter: https://gcc.gnu.org/wiki/InstallingGCC .
quelle
Ich folgte der am besten akzeptierten Antwort von Joelparkerhenderson. Dies ist die beste Antwort, die ich für die Installation auf einem * NIX-System über das Internet finden konnte.
Für die Nachwelt möchte ich hinzufügen, dass, wenn Sie einen Fehler wie "Installationsfehler: Suffix von Objektdateien kann nicht berechnet werden: Kompilieren nicht kompilieren" angezeigt werden.
Aktualisieren Sie dann Ihr LD_LIBRBARY_PATH mit / tmp / gcc / lib (Kontext finden Sie in der vollständigen Antwort von joelparkerhenderson).
/ tmp / gcc / lib enthält alle erforderlichen mpfr / mpc / gmp, sodass Dateien und der Laufzeitlinker sie nur finden können, wenn Sie sie zu LD_LIBRARY_PATH hinzufügen. Vergessen Sie auch nicht, LD_LIBRARY_PATH zu exportieren;). Mehr Kontext hier: https://gcc.gnu.org/wiki/FAQ#configure_suffix
quelle