2009-05-08 24 views
55

Quindi sono un nuovo programmatore e ho appena installato XCode sul mio Macbook per ottenere il GCC. Penso che Xcode sia l'unico modo per ottenere GCC su OSX. Ora quando eseguo la mia applicazione Hello World, in C++, g ++ si presenta dicendo che è la versione 4.0.1 ma quando cerco comandi che iniziano con g vedo anche g ++ - 4.2. C'è un modo per fare 4.2 default piuttosto che 4.0.1, e c'è anche un modo per aggiornare gcc alla versione 4.4.0 più recente?Aggiornamento GCC su OSX

EDIT: Ok, quindi ho installato Macports e installato gcc4.4 e si presenta sul terminale come gcc-mp-4.4 e come faccio a renderlo predefinito con gcc_select, come quelli che sono i comandi e roba del genere. Grazie.

risposta

57

Se si installa macports, è possibile installare gcc select e quindi scegliere la versione di gcc.

/opt/local/bin/port install gcc_select 

di vedere il tuo versioni utilizzano

port select --list gcc 

Per selezionare una versione utilizzare

sudo port select --set gcc gcc40 
+0

Non ho installato quella porta, ma ho ancora gcc_select. Questo è un Xcode più vecchio con OS X 10.4. – mkb

+0

Se hai bisogno di maggiori informazioni su MacPorts, sono qui (http://www.macports.org) e hanno porte per gcc fino a 4.5. – mkb

+0

ah ora funziona tutto, grazie mille ragazzi. –

1

Si possono avere più versioni di GCC sulla propria macchina, per selezionare quello che si desidera utilizzare chiamalo con percorso completo, ad es invece di g++ utilizzare il percorso completo /usr/bin/g++ sulla riga di comando (dipende da dove gcc vive).

Per la compilazione di progetti dipende da quale sistema si utilizza, non sono sicuro di Xcode (sono contento di default atm) ma quando si utilizzano Makefile è possibile impostare GXX =/usr/bin/g ++ e così via .

EDIT

C'è ora uno script xcrun che può essere interrogato per selezionare la versione appropriata di strumenti di compilazione su Mac. A parte lo man xcrun ho cercato su Google questa spiegazione a proposito di xcode and command line tools che riassume piuttosto come usarlo.

2

uso "gcc_select -l"

> gcc_select -l

gcc40 mp-gcc44

> gcc_select mp-gcc44

2

in /usr/bin tipo

sudo ln -s -f g++-4.2 g++

sudo ln -s -f gcc-4.2 gcc

Che dovrebbe farlo.

-5

Qualunque Apple abbia il gcc predefinito in xcode (4.2.1 su 10.6, 4.0.1 precedenti) è ben testato (e gestito) dai ragazzi apple e dallo "standard" per creare software con OS X. Tutto altrimenti no, quindi pensateci due volte se volete sviluppare software o essere beta tester gcc/OS X.

+5

... un anno e mezzo dopo, GCC 4.2 è ancora lo standard in XCode sull'ultimo Mac OS. Triste ma vero. –

+2

John Zwinck: In realtà,/usr/bin/gcc è llvm-gcc-4.2 e la strategia generale del compilatore è chiaramente llvm/clang. Quindi non mi aspetto più che accada più sul fronte gcc/OS X. –

+1

Note sulla versione XCode 4.6: "Xcode 4.6 è l'ultima versione che include il compilatore LLVM-GCC e il debugger GDB." https://developer.apple.com/library/mac/#releasenotes/DeveloperTools/RN-Xcode/ –

13

Sto solo passando per dire che l'utilizzo di un collegamento soft per realizzare questo è un'idea terribile, non buona, orribile.

Uno degli aspetti chiave della scrittura del software è la riproducibilità: si desidera poter ottenere sempre gli stessi risultati. Questi sistemi sono così complessi da voler ridurre tutte le fonti di errore invisibili.

Avere un collegamento software è una fonte invisibile di errore.È il genere di cosa che dimenticherai tra un mese, quindi passa a una macchina diversa e ti chiedi perché stai ottenendo risultati diversi, oppure, proverai ad aggiornare il tuo sistema e otterrai strani errori perché non è mi aspetto un link soft lì.

Inoltre, questo non è garantito per funzionare - in particolare, non è chiaro che si otterranno i corretti file di sistema, che sono sicuramente cambiati tra le iterazioni di gcc.

gcc_select è un modo sistematico di fare la stessa cosa che funzionerà in modo prevedibile, o nel peggiore dei casi è possibile presentare una segnalazione di bug e ottenere una correzione definitiva o risolverla da soli.

Purtroppo :-(gcc_select non influenza che XCode compilatore utilizza quindi non è la strada da percorrere se avete bisogno di lavorare in XCode (che faccio). Io ancora non so quale potrebbe essere in questo modo.

+0

Puoi _can_ impostare quale compilatore usa XCode, nelle impostazioni del target o del progetto (temo di non ricordare dove esattamente) è un percorso per il compilatore. Avevo bisogno di cambiarlo per compilare qualche libreria. – 11684

36

So che è una richiesta precedente, ma potrebbe essere ancora utile per alcuni Con le versioni correnti di MacPorts, è possibile scegliere la versione gcc predefinita utilizzando il comando port Per elencare le versioni disponibili di gcc, utilizzare:

$ sudo port select --list gcc

Available versions for gcc: 
gcc42 
llvm-gcc42 
mp-gcc46 
none (active) 

per impostare gcc alla versione MacPorts:

$ sudo port select --set gcc mp-gcc46

+5

Prima assicurati di eseguire 'sudo port install gcc_select'. Oppure otterrai 'Errore: Il comando 'lista' non è riuscito: il gruppo specificato 'gcc' non esiste. – ulidtko

+0

grazie mille per la risposta ...! mi stava rompendo la testa –

2

La ricetta che segue utilizzando Homebrew ha lavorato per me di aggiornare a gcc/g ++ 4.7:

$ brew tap SynthiNet/synthinet 
$ brew install gcc47 

trovato in un post here.