OSX – Sostituire gcc versione 4.2.1 con 4.9 installato tramite Homebrew

Questo mi ha tormentato per un po ‘ora. Sto cercando di compilare un enorme file C ++ (so che funziona come funziona bene sul mio computer Arch Linux al lavoro). Quando ho controllato la mia versione di GCC sul mio Mac, restituisce quanto segue

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn) Target: x86_64-apple-darwin14.1.0 Thread model: posix 

Ho anche installato la versione GCC più recente utilizzando Homebrew con

 brew install gcc49 

La mia domanda ora è come applicare la versione di GCC appena installata come versione predefinita utilizzata dal terminale?

Sono anche consapevole del fatto che quando si usa homebrew per isntall gcc lo chiama gcc-49 in modo che non ci sia confusione tra i pacchetti.

Non ho idea di come sostituire la versione 4.2.1 fornita con XCode con la versione 4.9 che ho installato.

Grazie

Modifica: Passa al mio mac per ottenere la dichiarazione completa di ritorno di gcc –version

Modifica 2: Il mio gioco finale qui è quello di essere in grado di navigare nella directory ed essere in grado di digitare

 make sudo make install 

per installare il demone che è stato fatto. In questo momento restituisce tonnellate di errori con pacchetti casuali e la libreria standard

Per impostazione predefinita, homebrew posiziona gli eseguibili (binari) per i pacchetti che installa in /usr/local/bin – che è un posto abbastanza ragionevole per i binari installati dagli utenti locali quando ci si pensa – rispetto a /bin che ospita i binari standardisded che appartengono al sistema operativo principale. Quindi, il tuo comando brew dovrebbe aver installato gcc-4.9 in /usr/local/bin . La domanda ora è come usarla … hai diverse opzioni.

opzione 1

Se vuoi semplicemente compilare una o due cose oggi e domani, e quindi probabilmente non usare di nuovo il compilatore, puoi anche invocare il gcc installato da homebrew con il percorso completo come questo:

 /usr/local/bin/gcc-4.9 --version 

opzione 2

Se stai usando gcc parecchio, diventa sempre un po ‘noioso digitando esplicitamente il percorso completo ogni volta, quindi puoi inserire quanto segue nel tuo ~/.bash_profile

 export PATH=/usr/local/bin:$PATH 

e quindi avviare un nuovo terminale e saprà che ha bisogno di cercare in /usr/local/bin , così sarete in grado di farla franca semplicemente digitando

 gcc-4.9 --version 

Opzione 3

Se vuoi solo usare gcc per invocare il compilatore, senza preoccuparti della versione attuale, puoi fare l’Opzione 2 sopra e creare anche un collegamento simbolico come questo

 cd /usr/local/bin ln -s gcc-4.9 gcc 

Ciò ti consentirà di eseguire il gcc installato in homebrew semplicemente digitando gcc alla riga di comando, in questo modo

 gcc --version 

Nota:

Se in un secondo momento si desidera installare, ad esempio gcc-4.13 o somesuch, si dovrebbe eseguire l’ brew install come prima, quindi modificare il collegamento simbolico in questo modo:

 cd /usr/local/bin rm gcc # remove old link from gcc to gcc-4.9 ln -s gcc-4.13 gcc # make new link from gcc to gcc-4.13 

semplicemente aggiornando l’ordine di $ PATH in ~ / .bash_profile nella versione di brew installata 'export PATH=/usr/local/Cellar/gcc/5.1.0/bin:$PATH' non era abbastanza per fare l’interruttore per me

cambiando l’alias nel tuo ~. / bash_profile ( alias gcc='gcc-5' ) funziona, ma puoi confondere ie which gcc restituirà la versione Clang

ciò che ha funzionato per me è stato creare un collegamento simbolico nella directory brew gcc e aggiornare il percorso (punto 1 sopra)

 cd /usr/local/Cellar/gcc/5.1.0/bin/gcc ln -s gcc-5 gcc 

ora which gcc restituisce la versione corretta 5.1.0

OS X non viene installato con GCC (4.2.1 o altro). Clang è il compilatore di sistema predefinito ed è stato per qualche tempo. Sta usando le intestazioni C ++ dalla 4.2.1 quando invocato come GCC. Hai provato a compilare il tuo codice con Clang in modo nativo, invece di chiamare “gcc” (che chiama Clang)? Ha più moderne intestazioni e supporto C ++ rispetto alla modalità di emulazione GCC.

Scarica i file binari di gcc untar e copia il cestino, lib include i file share e libexec nella directory / usr, quindi digita gcc –version questo è quello che mi aspetto che tu veda

gcc –version gcc (GCC) 4.9.2 20141029 (prerelease) Copyright (C) 2014 Free Software Foundation, Inc. Questo è software libero; vedere la fonte per le condizioni di copia. Non c’è garanzia; nemmeno per COMMERCIABILITÀ o IDONEITÀ PER UN PARTICOLARE SCOPO.