Upgrade von gcc für ein bestimmtes Benutzerkonto

Upgrade von gcc für ein bestimmtes Benutzerkonto

Ich arbeite an einem Computercluster mit CentOS6/RHEL6, den ich mit ca. 100 anderen Benutzern teile und der von einem einzelnen IT-Administrator überwacht wird.

Vor kurzem habe ich angefangen, in C++ zu schreiben, und ein Teil meines Codes hängt von C++11 ab. Lautdiese Webseite, C++11 wird von gccden Versionen 4.8.1 und höher unterstützt.

Leider liegt auf dem Rechnercluster die Version 4.4.7 vor.

Vor einiger Zeit habe ich aus einem anderen Grund versucht, gccVersion 4.8.4 an einem Ort unter meinem Home-Verzeichnis auf dem Cluster zu installieren. Die Installation schlug fehl, mitdiese Fehlermeldung. Nach einigem Googeln kam ich zu dem Schluss, dass ich aktualisieren sollte glibc, also versuchte ich, eine neuere Version davon in meinem Home-Verzeichnis zu installieren. Dasscheiterte dramatisch.

Meine IT-Administratorin kam zu dem Schluss: „Wahrscheinlich wird es nicht funktionieren, die Version von gccauf dem Cluster zu ändern.“ Bevor ich sie mit weiteren Fragen nerve (denn an diesem Punktbraucheneine aktualisierte Version vonmancheC-Compiler), ich verwende Crowdsourcing für Folgendes:

(1) Ist gcces möglich, die Version 4.8.1+ auf meinem Benutzerkonto zu installieren? (Nachdem ich dies das letzte Mal versucht hatte, sagten einige Leute, dass dies grundsätzlich eine schreckliche Idee sei.)

(2) Wenn die Antwort auf (1) ja lautet, welche Vorkehrungen muss ich diesmal treffen, um sicherzustellen, dass die Installation erfolgreich ist? Ist die Installation glibcauf meinem Konto notwendig? Ist das machbar?

(3) Wenn die Antwort auf (1) Nein lautet, wäre es für meinen IT-Administrator möglich, eine neuere Version systemweit zu installieren gcc, ohne Code zu beeinträchtigen, der von der bereits vorhandenen Version abhängt?

(4) Wenn keine der oben genannten Möglichkeiten für durchführbar ist gcc, ändert sich die Situation mit einem anderen C-Compiler?

Zusammenfassend suche ich jemanden mit Kenntnissen über gcc(oder einen anderen C-Compiler), der mir erklären kann, wie eine Person (ohne sudoBefugnis) bei der Aktualisierung vorgehen würde, sofern dies möglich ist.

Antwort1

Ich konnte GCC 4.8.5 aus dem Quellcode in einem Home-Verzeichnis auf Centos 6.7 erstellen. Ich verwende die Distribution glibc; ich musste glibc nicht erstellen.

Vorbehalt: Ich mache das auf einem System, auf dem die Build-Abhängigkeiten für das GCC 4.4.x-Quellpaket der Distribution sowie das libmpc-develPaket aus dem Epel-Repository installiert sind. Wenn diese fehlen, müssen Sie sie möglicherweise zuerst aus dem Quellcode in ein Home-Verzeichnis erstellen und den GCC-Build-Prozess irgendwie ändern, um sie von dort aus zu verwenden (falls das überhaupt möglich ist).

Gebäude GCC:

  1. GCC-Quelle abrufen

    curl -LO https://mirrors.kernel.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.bz2
    
  2. Extrakt

    tar xf gcc-4.8.5.tar.bz2
    
  3. Erstellen Sie ein Build-Verzeichnis außerhalb des GCC-Quellverzeichnisses und gehen Sie dorthin

     mkdir build && cd build
    
  4. Konfigurieren. Ich habe Folgendes gemacht:

     ../gcc-4.8.4/configure --build=x86_64-linux-gnu --prefix=/home/rakslice/gcc_4_8 \
                            --enable-checking=release --enable-languages=c,c++,fortran \
                            --disable-multilib --program-suffix=-4.8
    
  5. Bauen. Ich habe 4 Kerne, also habe ich Folgendes gemacht:

     make -j 5
    
  6. Installieren

     make install
    
  7. Jetzt kann ich Testcode kompilieren und ausführen.

     /home/rakslice/gcc_4_8/bin/g++-4.8     hello.cpp   -o hello
     ./hello
     Hello, World!
    

Antwort2

Zu Ihren konkreten Fragen:

(1) Ja, es ist machbar, aber es macht möglicherweise keinen Spaß.

(2) Nein, normalerweise können Sie die System-glibc verwenden. Von gcc aus benötigen Sie libstdc++, libgccusw.

Mein Ansatz wäre, demoffizielle Anweisungen sehr nahund greifen Sie nur dann auf eine inoffizielle Anleitung zurück, wenn diese sehr gut zu Ihrer Plattform passt.

Ich würde mich eigentlich nicht mit 4.8 abgeben und direkt auf eine der aktuellen Release-Reihen (5.2 oder 4.9) umsteigen.

Hinweis: Ich habe selbst keine Nicht-Root-GCC-Installation durchgeführt, aber ich arbeite an Systemen, die verschiedene Versionen von GCC als GNU-Module verwalten.

verwandte Informationen