Installa GNU GCC su mac

Recentemente mi sono sentito frustrato dal nuovo compilatore clang incluso con Xcode 5. Mi chiedevo quale sarebbe stato il modo migliore per installare GNU GCC su OS X.

Cose da considerare:

  • Non voglio usare MacPorts, fink, homebrew o qualsiasi altro gestore di pacchetti di terze parti.
  • Vorrei usare l’ultimo GCC, compilato dal sorgente, se ansible.
  • Ho bisogno del GCC esistente (hardlink to clang) per rimanere il default, ma per essere facilmente in grado di usare GNU GCC quando è necessario.
  • Vorrei evitare di modificare il codice se ansible.

EDIT: successo! Usando GCC 4.9.2 (con GMP 5.1.3, MPFR 3.1.2, MPC 1.0.2, ISL 0.12.2 e CLooG 0.18.1) ho costruito con successo GCC. Suggerimenti da prendere da qui:

  • Assicurati di utilizzare ISL e CLooG. Sì, sono opzionali, ma rendono un compilatore più ottimizzato e ho avuto problemi a build senza di loro. Assicurati di utilizzare ISL 0.12, non l’ultima versione (0.14).
  • Se ansible, utilizza gli Strumenti di sviluppo autonomi, non XCode. (XCode ha alcuni header buggy, e anche se non ho notato problemi nella creazione di GCC ho avuto problemi con altri software (ad esempio GPG)).
  • Ti consiglio di mettere tutte le tue fonti nella directory di gcc, piuttosto che costruirle e installarle separatamente (è più veloce in questo modo)
  • Assicurati di invocare configure con CC=clang CXX=clang++ modo che GCC sappia che non è stato compilato da GCC.
  • Sicuramente, sicuramente, sicuramente , invoca make con -j8 , altrimenti la build impiegherà circa 4 ore! (Con -j8 ci sono volute 1/3 ore sul mio MBP Mid-2012 con 8GB di RAM.) ( make -j8 significa make può creare 8 thread simultaneamente (4 core + HT), mentre su un 2-core make -j4 .)

Spero che questo ti aiuti!

Il modo in cui lo faccio è:

  1. Scarica il sorgente per GCC e numerosi pacchetti di supporto. Le istruzioni si trovano nel file gcc-4.xy/INSTALL/index.html nel codice sorgente GCC o online su http://gcc.gnu.org/install/ .

  2. Utilizzare uno script per estrarre il sorgente per GCC e le librerie di supporto in una directory, creare la directory degli oggetti ed eseguire la compilazione.

Questo è lo script che ho usato per GCC 4.8.2:

 GCC_VER=gcc-4.8.2 tar -xf ${GCC_VER}.tar.bz2 || exit 1 ( cd ${GCC_VER} || exit cat < 

Al termine, esegui anche l'installazione. Quindi aggiungere $HOME/gcc/gcc-4.8.2/bin (il nome specificato in --prefix plus /bin ) sul PATH prima di /usr/bin .

Con un MacBook Pro decente con un disco rotante a 5400 rpm, ci vuole un'ora o due per compilare tutto (usando l'opzione -j8 per make ) e richiede più gigabyte di spazio su disco durante la compilazione. SSD è bello quando lo fai (decisamente più veloce)!


GCC 4.9.0 è stato rilasciato il 2014-04-22. L'ho installato utilizzando fondamentalmente lo stesso processo, ma con CLooG 0.18.1 e ISL 0.12.2 (aggiornamenti richiesti) e GMP 5.1.3 (e 6.0.0a), MPC 1.0.2 (o 1.0.1) e MPFR 3.1.2 su Mac OS X 10.9.2 Mavericks e una derivata di Ubuntu 12.04. Attenzione che gmp-6.0.0a.tar.xz estrae nella directory gmp-6.0.0 (non gmp-6.0.0a come ci si potrebbe aspettare).


Tra il 2014 e il 2017-09-27, ho sviluppato le versioni GCC 4.9.0, 4.9.1, 5.1.0, 5.2.0, 5.3.0, 6.1.0, 6.2.0, 6.3.0, 7.1.0 con solo piccole variazioni nello script di build mostrato di seguito per GCC 7.2.0 su macOS Sierra (10.12). Le versioni delle librerie ausiliarie sono cambiate abbastanza spesso.


macOS Sierra e High Sierra

Il 2017-08-14, ho usato una variante minore dello script sopra per build GCC 7.2.0 su macOS Sierra 10.12 (usando XCode 8 come compilatore di bootstrap). Un cambiamento è che CLooG non sembra essere più necessario (ho smesso di aggiungerlo con GCC 6.2.0). Questo è il mio script attuale:

 #!/bin/bash #export DYLD_LIBRARY_PATH=$(clnpath $(dirname $(dirname $(which g++)))/lib:$DYLD_LIBRARY_PATH) unset DYLD_LIBRARY_PATH TAR=/opt/gnu/bin/tar VER_NUM=7.2.0 GCC_VER=gcc-${VER_NUM} TGT_BASE=/opt/gcc TGT_DIR=${TGT_BASE}/v${VER_NUM} CC=/usr/bin/clang CXX=/usr/bin/clang++ extract() { echo "Extract $1" $TAR -xf $1 } if [ ! -d "$GCC_VER" ] then extract ${GCC_VER}.tar.xz || exit 1 fi ( cd ${GCC_VER} || exit nbncl <&2; exit 1; fi if [ ! -d "$file-$vrsn" ] then ( set -x extract "$tarfile" && ln -s "$file-$vrsn" "$file" ) || exit 1 fi done ) if [ $? = 0 ] then mkdir ${GCC_VER}-obj cd ${GCC_VER}-obj ../${GCC_VER}/configure --prefix="${TGT_DIR}" \ CC="${CC}" \ CXX="${CXX}" make -j8 bootstrap fi 

Assicurati che la tua versione di tar supporti tutti e 4 i formati di file compressi ( .lz , .gz , .bz2 , .bz2 ), ma dal momento che la versione Mac standard di tar fa per me, probabilmente funzionerà anche per te.

Il 27-09-2017, non sono riuscito a creare GCC 7.2.0 su macOS High Sierra 10.13 (usando XCode 9 per il compilatore bootstrap) usando lo stesso script di Sierra 10.12. L'errore immediato era un'intestazione mancante ; Dovrò rintracciare se la mia installazione di XCode 9 è corretta o, più precisamente, perché non è corretta poiché è un'intestazione standard in C ++ 98 in poi. Probabilmente c'è una soluzione facile; Non ho ancora passato il tempo a inseguirlo ancora. (Sì, ho eseguito xcode-select --install più volte, il fatto che ho dovuto eseguirlo più volte a causa di problemi di rete potrebbe essere parte del problema.)

Usa un binario precompilato appositamente per OS X 10.9.x Mavericks:

gcc-4.9

Compilato usando il codice sorgente dai server GNU.

Questo contiene versioni correnti (4.7 è la versione stabile) di gfortran (compilatore GNU Fortran 95 gratuito, open source, GNU), gcc (GNU C) e g ++ (GNU C ++) in grado di eseguire auto-vettorializzazione (cioè modificare il codice per avvantaggiarne di AltiVec / SSE, automaticamente) e altre ottimizzazioni sofisticate come OpenMP. Per ulteriori informazioni, consultare questa pagina Web .

Scarica i miei file binari e porta cd alla cartella di download . Quindi gunzip gcc-4.9-bin.tar.gz (se il tuo browser non lo ha già fatto) e poi sudo tar -xvf gcc-4.9-bin.tar -C / . Installa tutto in / usr / local . È ansible richiamare il compilatore Fortran 95 digitando semplicemente gfortran . Dovrai inoltre installare gli XCode Tools di Apple dal Mac App Store. Con XCode 4 o 5 è necessario scaricare gli strumenti da riga di comando come passaggio aggiuntivo. Troverete l’opzione per scaricare gli strumenti da riga di comando nelle Preferenze di XCode.

Su 10.9 Mavericks , puoi ottenere gli strumenti da riga di comando semplicemente digitando xcode-select –install .

Homebrew ora ha il pacchetto GCC in modo da poterlo installare con questo comando:

 brew install gcc