Super detaillierter GCC-Upgrade-Prozess unter Linux

Super detaillierter GCC-Upgrade-Prozess unter Linux

Vorwort

C, C++ usw. erfordern diesen Compiler GCC. Kürzlich fragte mich ein DBA-Freund, ob bei der Installation einer MySQL-Datenbank auf dem Betriebssystem RHEL7.6 eine höhere Version von GCC erforderlich sei. Nach einigen Recherchen stellte ich fest, dass es viele Fallstricke gibt. Ich habe diesen Artikel zusammengefasst und mit Ihnen geteilt.

1. Aktuelle gcc-Version

[root@rhel76 ~]# gcc -v
Integrierte Spezifikationen verwenden.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Ziel: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread-Modell: POSIX
gcc Version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 

Aus dem Obigen können wir ersehen, dass die aktuelle Version 4.8.5 ist. Dieses Mal haben wir auf 10.1.0 aktualisiert

2. Installieren Sie gcc

--Download-Adresse:
https://mirrors.aliyun.com/gnu/gcc/gcc-10.1.0/

[root@rhel76 ~]# tar -vxf gcc-10.1.0.tar.gz
[root@rhel76 gcc-10.1.0]# mkdir build
[root@rhel76 gcc-10.1.0]# cd build/
[root@rhel76 build]# ../configure --prefix=/usr/local/gcc-10.1.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib


Build-Systemtyp wird geprüft … x86_64-pc-linux-gnu
Hostsystemtyp wird geprüft … x86_64-pc-linux-gnu
Zielsystemtyp wird geprüft … x86_64-pc-linux-gnu
Suche nach einer BSD-kompatiblen Installation … /usr/bin/install -c
prüfe ob ln funktioniert... ja
überprüfe, ob ln -s funktioniert... ja
Suche nach einem Sed, der die Ausgabe nicht abschneidet … /usr/bin/sed
Suche nach gawk... gawk
Überprüfung auf Libatomic-Unterstützung ... ja
Überprüfung auf Libitm-Unterstützung ... ja
Überprüfung auf Libsanitizer-Unterstützung ... ja
Suche nach Libvtv-Unterstützung … ja
Suche nach libhsail-rt-Unterstützung … ja
Suche nach Libphobos-Unterstützung … ja
Suche nach gcc... gcc
prüfen, ob der C-Compiler funktioniert... ja
Überprüfung des Standardausgabedateinamens des C-Compilers: a.out
Überprüfung des Suffixes ausführbarer Dateien … 
prüfen, ob wir Cross-Compiling durchführen... nein
Überprüfung des Suffixes von Objektdateien... o
Überprüfen, ob wir den GNU C-Compiler verwenden ... ja
Überprüfen, ob gcc -g akzeptiert... ja
Suche nach GCC-Option zum Akzeptieren von ISO C89 … keine erforderlich
Suche nach g++... g++
Überprüfen, ob wir den GNU C++-Compiler verwenden ... ja
Überprüfen, ob g++ -g akzeptiert... ja
Überprüfen, ob G++ -static-libstdc++ -static-libgcc akzeptiert... nein
Suche nach Gnatbind ... nein
Suche nach Gnatmake ... nein
Überprüfen, ob der Compilertreiber Ada versteht ... nein
Überprüfen, wie gebootet-basierte Objekte verglichen werden ... cmp --ignore-initial=16 $$f1 $$f2
Suche nach objdir...libs
Überprüfung auf die richtige Version von gmp.h ... nein
Konfigurieren: Fehler: Zum Erstellen von GCC sind GMP 4.2+, MPFR 3.1.0+ und MPC 0.8.0+ erforderlich.
Versuchen Sie die Optionen --with-gmp, --with-mpfr und/oder --with-mpc, um Folgendes anzugeben:
Der Quellcode dieser Bibliotheken ist zu finden unter
ihren jeweiligen Hosting-Sites sowie bei
https://gcc.gnu.org/pub/gcc/infrastructure/. Siehe auch
http://gcc.gnu.org/install/prerequisites.html für weitere Informationen. Wenn
Sie haben GMP, MPFR und/oder MPC aus einem Vertriebspaket eines Anbieters bezogen,
Stellen Sie sicher, dass Sie sowohl die Bibliotheken als auch den Header installiert haben
Dateien. Sie können sich in separaten Paketen befinden.

Aus dem Protokoll geht der folgende Fehler hervor, daher installieren wir jeden einzelnen davon: configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.

3.gmp-Installation

[root@jeames007 ~]# tar -vxf gmp-5.0.1.tar.bz2
[root@jeames007 ~]# cd gmp-5.0.1/
[root@jeames007 gmp-5.0.1]# ./configure --prefix=/usr/local/gmp-5.0.1
[root@jeames007 gmp-5.0.1]# machen
[root@jeames007 gmp-5.0.1]# make install
make[4]: Verlasse das Verzeichnis `/root/gmp-5.0.1'
make[3]: Verlasse das Verzeichnis `/root/gmp-5.0.1'
make[2]: Verlasse das Verzeichnis `/root/gmp-5.0.1'
make[1]: Verlasse das Verzeichnis `/root/gmp-5.0.1'

4.MPFR-Kompilierung

[root@jeames007 ~]# tar -vxf mpfr-3.1.5.tar.xz

[root@jeames007 ~]# cd mpfr-3.1.5/
[root@jeames007 ~]#./configure --prefix=/usr/local/mpfr-3.1.5 --with-gmp=/usr/local/gmp-5.0.1
[root@jeames007 mpfr-3.1.5]# machen
[root@jeames007 mpfr-3.1.5]# make install

5.MPC-Zusammenstellung

[root@jeames007 ~]# tar -vxf mpc-1.0.1.tar.gz
[root@jeames007 ~]# cd mpc-1.0.1
[root@jeames007 ~]# ./configure --prefix=/usr/local/mpc-1.0.1 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5
[root@jeames007 mpc-1.0.1]# machen
[root@jeames007 mpc-1.0.1]# make install

6. GCC-Konfiguration

[root@rhel76 ~]# cd gcc-10.1.0
[root@rhel76 gcc-10.1.0]# cd build/
../Konfigurieren --prefix=/usr/local/gcc-10.1.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.1


Build-Systemtyp wird geprüft … x86_64-pc-linux-gnu
Hostsystemtyp wird geprüft … x86_64-pc-linux-gnu
Zielsystemtyp wird geprüft … x86_64-pc-linux-gnu
Suche nach einer BSD-kompatiblen Installation … /usr/bin/install -c
prüfe ob ln funktioniert... ja
überprüfe, ob ln -s funktioniert... ja
Suche nach einem Sed, der die Ausgabe nicht abschneidet … /usr/bin/sed
Suche nach gawk... gawk
Überprüfung auf Libatomic-Unterstützung ... ja
Überprüfung auf Libitm-Unterstützung ... ja
Überprüfung auf Libsanitizer-Unterstützung ... ja
Suche nach Libvtv-Unterstützung … ja
Suche nach libhsail-rt-Unterstützung … ja
Suche nach Libphobos-Unterstützung … ja
Suche nach gcc... gcc
prüfen, ob der C-Compiler funktioniert... ja
Suche nach dem Standardausgabedateinamen des C-Compilers: a.out
Überprüfung des Suffixes ausführbarer Dateien … 
Überprüfen, ob wir Cross-Compiling durchführen ... nein
Überprüfung des Suffixes von Objektdateien... o
Überprüfen, ob wir den GNU C-Compiler verwenden ... ja
Überprüfen, ob gcc -g akzeptiert... ja
Suche nach GCC-Option zum Akzeptieren von ISO C89 … keine erforderlich
Suche nach g++... g++
Überprüfen, ob wir den GNU C++-Compiler verwenden ... ja
Überprüfen, ob g++ -g akzeptiert... ja
Überprüfen, ob G++ -static-libstdc++ -static-libgcc akzeptiert... nein
Suche nach Gnatbind ... nein
Suche nach Gnatmake ... nein
Überprüfen, ob der Compilertreiber Ada versteht ... nein
Überprüfen, wie gebootet-basierte Objekte verglichen werden ... cmp --ignore-initial=16 $$f1 $$f2
Suche nach objdir...libs
Überprüfung auf die richtige Version von gmp.h ... ja
Überprüfung auf die richtige Version von mpfr.h ... fehlerhaft, aber akzeptabel
Überprüfung auf die richtige Version von mpc.h ... ja
Überprüfung auf die richtige Version der gmp/mpfr/mpc-Bibliotheken... ja
Suche nach isl 0.15 oder höher... nein
erforderliche isl-Version ist 0.15 oder höher
*** Diese Konfiguration wird in den folgenden Unterverzeichnissen nicht unterstützt:
     gnattools gotools Ziel-Libada Ziel-Libhsail-rt Ziel-Libphobos Ziel-Zlib Ziel-Libbacktrace Ziel-Libgfortran Ziel-Libgo Ziel-Libffi Ziel-Libobjc Ziel-Liboffloadmic
    (Alle anderen Verzeichnisse sollten weiterhin problemlos funktionieren.)
Suche nach Standard-BUILD_CONFIG... Bootstrap-Debug
Überprüfung auf --enable-vtable-verify... nein
Suche nach Bison ... Bison -y
Suche nach Bisons ... Bisons
Suche nach GM4 ... nein
Suche nach gnum4... nein
Suche nach m4...m4
Suche nach Flex... Flex
Suche nach Flex... Flex
Suche nach Makeinfo ... nein
/root/gcc-10.1.0/missing: Zeile 81: makeinfo: Befehl nicht gefunden
Suche nach expect... nein
Suche nach Runtest ... nein
Suche nach ar...ar
Suche nach so... so
Suche nach DLLTool... nein
Suche nach ld...ld
auf Lipo prüfen... nein
Suche nach nm... nm
Suche nach ranlib... ranlib
Suche nach Streifen... Streifen
Suche nach Windres... nein
Suche nach Windmc ... nein
Suche nach Objektkopie... Objektkopie
Suche nach objdump... objdump
Suche nach Otool ... nein
Suche nach readelf... readelf
Suche nach CC...CC
Suche nach C++... C++
Suche nach gcc... gcc
Suche nach gfortran... gfortran
Suche nach gccgo... nein
Suche nach GDC ... nein
Suche nach ar... nein
Suche nach ar...ar
Suche nach as... nein
Suche nach so... so
Suche nach DLLTool... nein
Suche nach DLLTool... nein
Suche nach ld... nein
Suche nach ld...ld
auf Lipo prüfen... nein
auf Lipo prüfen... nein
Suche nach nm... nein
Suche nach nm... nm
Suche nach Objektkopie... nein
Suche nach Objektkopie... Objektkopie
Suche nach Objdump ... nein
Suche nach objdump... objdump
Suche nach Otool ... nein
Suche nach Otool ... nein
Suche nach Ranlib ... nein
Suche nach ranlib... ranlib
Überprüfung auf Readelf ... nein
Suche nach readelf... readelf
auf Streifen prüfen... nein
Suche nach Streifen... Streifen
Suche nach Windres... nein
Suche nach Windres... nein
Suche nach Windmc ... nein
Suche nach Windmc ... nein
Überprüfen, wo sich das Ziel befindet ... Host-Tool
Überprüfen, wo sich das Ziel als Host-Tool befindet
überprüfe, wo sich das Ziel-CC befindet... gerade kompiliert
Überprüfe, wo das Ziel-C++ zu finden ist ... gerade kompiliert
überprüfe, wo das Ziel-C++ für libstdc++ zu finden ist... gerade kompiliert
Überprüfen, wo das Ziel-DLLtool zu finden ist ... Hosttool
überprüfe, wo der Ziel-GCC zu finden ist ... gerade kompiliert
Überprüfen, wo sich das Ziel-Gfortran befindet ... Host-Tool
Überprüfen, wo sich das Ziel-GCCGO befindet ... Host-Tool
Überprüfen, wo sich das Ziel-GDC befindet ... Host-Tool
Überprüfen, wo sich das Ziel-LD befindet ... Host-Tool
Überprüfen, wo sich das Ziel-Liposuktionstool befindet ...
Überprüfen, wo sich das Ziel-NM befindet ... Host-Tool
Überprüfen, wo sich das Ziel-Objcopy...-Host-Tool befindet
Überprüfen, wo sich das Ziel-Objdump befindet ... Host-Tool
Überprüfen, wo sich das Ziel-Otool befindet ... Host-Tool
Überprüfen, wo sich das Ziel-Ranlib...-Hosttool befindet
Überprüfen, wo sich das Ziel-Readself...-Host-Tool befindet
Überprüfen, wo sich der Zielstreifen befindet ... Host-Tool
Überprüfen, wo sich das Ziel-Windres...-Hosttool befindet
Überprüfen, wo sich das Ziel-Windmc...-Hosttool befindet
Überprüfen, ob betreuerspezifische Teile von Makefiles aktiviert werden sollen ... nein
konfigurieren: ./config.status erstellen
config.status: Makefile erstellen

[root@jeames007 ~]# make -j4
Make dauert sehr lange. Bitte haben Sie Geduld. Ich habe 1 Stunde zum Kompilieren gebraucht. Wenn die Bedingungen es erlauben, können Sie beim Kompilieren make -j8 verwenden.

[root@jeames007 build]# make install

Zu diesem Zeitpunkt wurde die GCC-Version noch nicht aktualisiert, daher sind die folgenden Vorgänge erforderlich

7. GCC-Versionsaktualisierung

mv /usr/bin/gcc /usr/bin/gcc485
mv /usr/bin/g++ /usr/bin/g++485
mv /usr/bin/c++ /usr/bin/c++485
mv /usr/bin/cc /usr/bin/cc485


ln -s /usr/local/gcc-10.1.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-10.1.0/bin/g++ /usr/bin/g++
ln -s /usr/local/gcc-10.1.0/bin/c++ /usr/bin/c++
ln -s /usr/local/gcc-10.1.0/bin/gcc /usr/bin/cc


mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
ln -s /usr/local/gcc-10.1.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6


Nachdem das Skript erfolgreich ausgeführt wurde, können Sie die aktuell verwendete GCC-Version anzeigen. Der anzuzeigende Befehl lautet: gcc -v

[root@jeames007 ~]# gcc -v
Integrierte Spezifikationen verwenden.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-10.1.0/libexec/gcc/x86_64-pc-linux-gnu/10.1.0/lto-wrapper
Ziel: x86_64-pc-linux-gnu
Konfiguriert mit: ../configure --prefix=/usr/local/gcc-10.1.0/ --enable-checking=release --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.5 --with-mpc=/usr/local/mpc-1.0.1
Thread-Modell: POSIX
Unterstützte LTO-Komprimierungsalgorithmen: zlib
gcc Version 10.1.0 (GCC)

Bildbeschreibung hier einfügen

Dies ist das Ende dieses Artikels über den äußerst detaillierten gcc-Upgradeprozess in Linux. Weitere relevante Inhalte zum Linux-gcc-Upgrade finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Manuelles Upgrade von gcc auf gcc-6.1.0 in CentOS 6.5 unter Linux
  • Detaillierter Prozess zum Upgrade von gcc (Version 10.2.0) in der CentOS7-Umgebung

<<:  Zwei Möglichkeiten, damit IE6 Bilder im PNG-24-Format normal anzeigt

>>:  Detaillierte Erklärung des Overflow-Scrollens zur Lösung des Scroll-Lag-Problems

Artikel empfehlen

Webdesign-Referenz Firefox-Standardstil

Obwohl das W3C einige Standards für HTML festgeleg...

Zusammenfassung der Verwendung von JavaScript JSON.stringify()

Inhaltsverzeichnis 1. Nutzung 1. Grundlegende Ver...

Natives JS zur Realisierung eines springenden Balls

Aus einer Laune heraus habe ich eine Fallstudie ü...

So implementieren Sie den Vue-Timer

In diesem Artikelbeispiel wird der spezifische Co...

Zeitleistenimplementierungsmethode basierend auf ccs3

In Webprojekten nutzen wir häufig die Zeitleisten...

So installieren Sie Theano und Keras auf einem Ubuntu-System

Hinweis: Das System ist Ubuntu 14.04LTS, ein 32-B...

Vue-Routing - Methode zum Sprung relativer Pfade

Inhaltsverzeichnis Relativer Pfadsprung im Vue-Ro...

So führen Sie das Springboot-Projekt im Docker aus

1. Klicken Sie unten in IDEA auf Terminal und geb...

Grundlegende Anwendungsbeispiele für benannte Slots in Vue

Vorwort Benannte Slots werden mithilfe des Attrib...