Aggiornamento di gcc per un account utente specifico


1

Lavoro su un cluster informatico con CentOS6 / RHEL6 che condivido con ~ 100 altri utenti, supervisionato da un singolo amministratore IT.

Recentemente, ho iniziato a scrivere in C ++, e parte del mio codice dipende da C ++ 11. Secondo questa pagina web , C ++ 11 è supportato da gcc versioni 4.8.1 e successive.

Sfortunatamente, il cluster di calcolo ha la versione 4.4.7.

Poco fa, per un motivo diverso, ho provato a installare gcc versione 4.8.4 in una posizione sotto la mia home directory sul cluster. L'installazione non è riuscita, con questo messaggio di errore . Alcuni googling mi hanno portato a credere che dovrei aggiornare glibc, così ho provato ad installarne una versione più recente nella mia home directory. Quello fallito drammaticamente .

Il mio amministratore IT ha concluso, "Probabilmente non funzionerà per modificare la versione di gcc sul cluster. "Prima di infastidirla con più domande (perché a questo punto io bisogno una versione aggiornata di alcuni Compilatore C), io sono crowd-sourcing questi:

(1) È l'installazione gcc versione 4.8.1+ per il mio account utente fattibile? (Dopo che ho provato a farlo l'ultima volta, alcune persone hanno detto che era fondamentalmente una pessima idea.)

(2) Se la risposta alla (1) è affermativa, quali precauzioni dovrei prendere questa volta per assicurarmi che l'installazione abbia successo? Sta installando glibc al mio account necessario? È fattibile?

(3) Se la risposta a (1) è no, sarebbe possibile per il mio amministratore IT installare una versione più recente di gcc a livello di sistema, senza interrompere il codice che dipende dalla versione già presente?

(4) Se nessuno dei precedenti è fattibile gcc, la situazione cambia con un altro compilatore C?

Per riassumere, sto cercando qualcuno con conoscenza di gcc (o un altro compilatore C) per spiegare come una persona (senza sudo autorità) farebbe un aggiornamento, se possibile.


2
È possibile creare gcc 4.8.1+ in una directory home e IIRC è possibile creare e utilizzare un glibc alternativo con esso. Un mio collega stava cercando di farlo su una scatola di Centos 6.x seguendo alcune istruzioni che ha trovato in un post sul blog destinato a Ubuntu, e si è imbattuto in alcuni ostacoli, ma siamo riusciti a superarlo abbastanza bene da poterlo fare costruisci ed esegui gli strumenti di cui aveva bisogno potenzialmente con alcuni passaggi aggiuntivi. Se avrò la possibilità, rivisiterò i miei appunti e metto insieme una risposta completa.
rakslice

Risposte:


2

Sono stato in grado di compilare GCC 4.8.5 dal sorgente in una directory home su Centos 6.7. Sto usando la distro glibc; Non ho dovuto costruire glibc.

Avvertenza: lo sto facendo su un sistema in cui sono installate le dipendenze di compilazione per il pacchetto sorgente GCC 4.4.x della distro e libmpc-devel pacchetto dal repository di Epel. Se mancano questi, potrebbe essere necessario prima costruirli dal sorgente in una home directory e modificare il processo di compilazione gcc in qualche modo per utilizzarli da lì (se ciò è anche possibile).

Costruire GCC:

  1. Acquisisci la fonte GCC

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

    tar xf gcc-4.8.5.tar.bz2
    
  3. Crea una directory di compilazione al di fuori della directory dei sorgenti GCC e vai ad essa

     mkdir build && cd build
    
  4. Configurare. L'ho fatto:

     ../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. Costruire. Ho 4 core così ho fatto:

     make -j 5
    
  6. Installare

     make install
    
  7. Ora posso compilare ed eseguire un codice di test.

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

0

Per quanto riguarda le tue domande specifiche:

(1) Sì, è fattibile, ma potrebbe non essere divertente.

(2) No, di solito è possibile utilizzare il sistema glibc. Da gcc hai bisogno libstdc++, libgcc eccetera.

Il mio approccio sarebbe quello di seguire il istruzioni ufficiali molto vicino e ricorrere a un'istruzione non ufficiale solo se corrisponde alla tua piattaforma molto bene.

In realtà non mi preoccuperei di 4.8 e passerei direttamente a una delle serie di rilascio correnti (5.2 o 4.9).

Nota: non ho fatto l'installazione di gcc non-root da solo, ma lavoro su sistemi che mantengono diverse versioni di gcc come moduli gnu.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.