Domanda

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 ++ viene fuori dicendo che è la versione 4.0.1 ma quando cerco comandi che iniziano con g vedo anche g ++ - 4.2. Esiste un modo per rendere 4.2 predefinito anziché 4.0.1, e c'è anche un modo per aggiornare gcc all'ultima versione 4.4.0?

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 quali sono i comandi e roba. Grazie.

È stato utile?

Soluzione

Se installi macports puoi installare gcc select, quindi scegliere la tua versione di gcc.

/opt/local/bin/port install gcc_select

Per vedere le tue versioni usa

port select --list gcc

Per selezionare una versione utilizzare

sudo port select --set gcc gcc40

Altri suggerimenti

So che è una vecchia richiesta. Ma potrebbe essere ancora utile per alcuni. Con le versioni correnti di MacPorts, puoi scegliere la versione predefinita di gcc usando il comando port. Per elencare le versioni disponibili di gcc, usare:

  

$ sudo port select --list gcc

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

Per impostare gcc sulla versione di MacPorts:

  

$ sudo port select --set gcc mp-gcc46

Sto solo dicendo che usare un soft link per realizzare questo è un'idea terribile, non buona, orribile.

Una delle cose chiave della scrittura del software è la riproducibilità: vuoi essere in grado di ottenere gli stessi risultati ogni volta. Questi sistemi sono così complessi che si desidera ridurre tutte le fonti invisibili di errore.

Avere un soft link è una fonte invisibile di errore. È il genere di cose che dimenticherai in un mese, quindi passa a una macchina diversa e ti chiedi perché stai ottenendo risultati diversi - o, proverai ad aggiornare il tuo sistema e otterrai strani errori perché non è in attesa di un softlink lì.

Inoltre, questo non è garantito per funzionare - in particolare, non è chiaro che otterrai i file di inclusione del sistema corretti, che sono certamente cambiati tra le iterazioni di gcc.

gcc_select è un modo sistematico di fare la stessa cosa che funzionerà in modo prevedibile, o nel caso peggiore è possibile presentare una segnalazione di bug e ottenere un'eventuale correzione o risolverlo da soli.

Sfortunatamente :-( gcc_select non influenza quale compilatore XCode utilizza, quindi non è la strada da percorrere se devi lavorare in XCode (cosa che faccio). Non so ancora quale potrebbe essere in questo modo.

usa " gcc_select -l "

  

>   gcc_select -l

     

gcc40 mp-gcc44

     

>   gcc_select mp-gcc44

La seguente ricetta usando Homebrew ha funzionato per me per l'aggiornamento a gcc / g ++ 4.7:

$ brew tap SynthiNet/synthinet
$ brew install gcc47

L'ho trovato in un post qui .

in / usr / bin digitare

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

sudo ln -s -f gcc-4.2 gcc

Dovrebbe farlo.

Puoi avere più versioni di GCC nella tua casella, per selezionare quella che desideri utilizzare chiamala con il percorso completo, ad es. invece di g ++ usa il percorso completo / usr / bin / g ++ sulla riga di comando (dipende da dove risiede il tuo gcc).

Per i progetti di compilazione dipende dal sistema che usi, non sono sicuro di Xcode (sono contento del default atm) ma quando usi Makefile puoi impostare GXX = / usr / bin / g ++ e così via.

Modifica

Ora c'è uno script xcrun su cui è possibile eseguire una query per selezionare la versione appropriata degli strumenti di compilazione su Mac. A parte man xcrun ho cercato su Google questa spiegazione su xcode e strumenti da riga di comando che riassume praticamente come usarlo.

Qualunque sia la Apple fornita come gcc predefinita in xcode (4.2.1 su 10.6, 4.0.1 prima) è ben testata (e mantenuta) dai ragazzi di Apple e dallo "standard" per creare software con su OS X. Tutto il resto no, quindi pensaci due volte se vuoi sviluppare software o essere beta tester gcc / OS X.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top