Come installo GCC tramite Homebrew?


79

Sto usando Homebrew esclusivamente (vale a dire non lo faccio, e non voglio, usare MacPorts o Fink). Voglio anche mantenere le installazioni manuali al minimo indispensabile. 1

... Ma come posso installare GCC?

Prima di tutto, ho ovviamente installato Xcode ma la versione attuale non viene fornita con un GCC abbastanza aggiornato (ho bisogno di almeno 4.5, ma preferirei il più recente) - in realtà, non viene fornito con una corretta GCC a tutti (IT solo le navi clang) e che sembra essere un problema per Homebrew ...

Sono a conoscenza di un elenco di GCC personalizzati e cross compiler, ma in realtà tutte quelle installazioni richiedono un GCC già installato - almeno, brewil loro insuccesso fallisce con errori di linker su Lion che attribuisco a Clang e -use-gccnon funziona per ovvio motivi.

brew doctor menziona solo quello che già so, che non è installato GCC (4.2.x).


1 Ho precedentemente mixato MacPorts, Homebrew e alcune installazioni manuali e ho finito con un inferno di manutenzione e controllo delle versioni. Non voglio andarci di nuovo.


Qual è l'output di gcc --version? Ottengo i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)e ho semplicemente installato Xcode dal MAS. Inoltre, qual è l'output di echo $PATH?
Gio

@Gio ho ottenuto lo stesso risultato. $PATHè il solito (questo è un sistema quasi vuoto, dopo tutto): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin... ma non penso che questo abbia importanza. Le formule fornite da homebrew-alt sono semplicemente obsolete e non funzionano con Clang.
Konrad Rudolph,

1
Perché usare Homebrew? MacPorts è bravo a gestire più versioni di compilatori. E i MacPorts possono fare qualsiasi cosa Homebrew possa fare.
Jeff Burdges,

@JeffBurdges Homebrew è meglio. Praticamente in qualsiasi categoria.
Konrad Rudolph,

2
Come mai? Ad essere sincero, non mi piace Homebrew principalmente perché manca (a) descrizioni dei pacchetti e (b) pacchetti matematici. Nel complesso MacPorts ha forse sei volte il numero di pacchetti di Homebrew, ma sì, sono i pacchetti oscuri che mancano. Sono soddisfatto dei MacPorts in generale, anche se ovviamente vorrei che si integrassero con i gestori di pacchetti linguistici come CPAN, CTAN, Caball, ecc.
Jeff Burdges,

Risposte:


30

La soluzione fornita da @Konrad Rudolph non è più del tutto corretta poiché la formula GCC da lui menzionata è stata spostata da homebrew/dupesa homebrew/versions. Puoi scegliere quale versione di GCC installare. Ad esempio, al momento della stesura di questa risposta sono disponibili le versioni 4.5, 4.7 e 4.8. Puoi verificare quali versioni sono disponibili qui .

In breve, è possibile installare GCC 4.8 utilizzando

brew tap homebrew/versions
brew install [flags] gcc48

È possibile visualizzare i flag di installazione disponibili utilizzando

brew options gcc48

Ci ho provato e l'ho fatto installare ma muore così:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P

@WarrenP Hai installato con qualcuno [flags]? Sulle mie macchine, ho installato senza flag e funziona benissimo. Perché non provi a chiamare gcc-4.8senza alcun file di input e vedi se ricevi un errore irreversibile? Prova anche a ls /usr/local/Cellar/gcc48/4.8.0/binvedere se quella directory contiene gcc-4.8.
yihangho,

Contiene gcc-4.8 ed è in gcc-4.8 --versionesecuzione ma non può essere eseguito sullo strumento secondario chiamato ase quindi muore.
Warren P

Hmm ... Francamente non ho idea di come risolverlo. Forse dovremo aspettare qualche utente più esperto ...
yihangho,

2
@nkint O quello o aggiungi il alias g++='g++-4.8'tuo .bashrc.
yihangho,

38

Soluzione homebrew

Per rispondere alla mia domanda, homebrew-versionsora ha una formula abbastanza aggiornata di GCC . Può essere installato usando

brew install [flags] https://raw.github.com/Homebrew/homebrew-versions/gcc48.rb

Dove [flags]dovrebbe includere tutte le lingue richieste, ad es. ( --enable-cxx --enable-fortran).

Questo installerà gli eseguibili con un suffisso, cioè gccdovrà essere accessibile gcc-versionper evitare scontri. Se necessario, è possibile creare collegamenti simbolici appropriati per rendere questa versione predefinita.

Installazione manuale

In alternativa , un GCC aggiornato (al momento della stesura) può essere compilato manualmente usando il seguente script shell:

VERSION=4.7.0
PREFIX=/usr/gcc-$(VERSION)
LANGUAGES=c,c++,fortran
MAKE=make
# Or
# MAKE='make -j 4' # to compile using four cores

brew-path() { brew info $1 | head -n3 | tail -n1 | cut -d' ' -f1; }

# Prerequisites

brew install gmp
brew install mpfr
brew install libmpc

# Download & install the latest GCC

mkdir -p $PREFIX
mkdir temp-gcc
cd temp-gcc
wget ftp://ftp.gnu.org/gnu/gcc/gcc-$VERSION/gcc-$VERSION.tar.gz
tar xfz gcc-$VERSION.tar.gz
rm gcc-$VERSION.tar.gz
cd gcc-$VERSION

mkdir build
cd build

../configure \
   --prefix=$PREFIX \
   --with-gmp=$(brew-path gmp) \
   --with-mpfr=$(brew-path mpfr) \
   --with-mpc=$(brew-path libmpc) \
   --program-suffix=-$VERSION \
   --enable-languages=$LANGUAGES \
   --with-system-zlib \
   --enable-stage1-checking \
   --enable-plugin \
   --enable-lto \
   --disable-multilib

$MAKE bootstrap

make install

# Uncomment for cleanup …
# cd ../../..
# rm -r temp-gcc

Questo metterà in scena GCC nel percorso /usr/gcc-4.7.0. Ora tutto ciò che devi fare è creare collegamenti simbolici agli eseguibili o aggiungere la bindirectory alla $PATHvariabile.


1
Cercando di compilare una versione funzionante di wine, ho anche incontrato il problema di un gcc mancante - purtroppo l'installazione di v4.7 tramite homebrew mi ha dato alcuni errori; così ho scelto Apple v4.2 usando brew tap homebrew/dupesseguito da brew install apple-gcc42. Questo mi ha aiutato a ottenere un gcc e un vino funzionanti. Puoi anche ottenere i binari (come fa homebrew) da qui: r.research.att.com/tools
iolsmit

@iolsmit Dovresti assolutamente provare di nuovo l'installazione di GCC 4.7 con un Homebrew pulito e aggiornato. Dovrebbe funzionare come un fascino. In caso contrario, si prega di presentare un bug ai manutentori di Homebrew-dupes.
Konrad Rudolph,

3
brew tap homebrew/dupes; brew install gcc --use-llvm. Vedi github.com/Homebrew/homebrew-dupes/issues/20
phs

@KonradRudolph ovunque io giro mi stai rispondendo alle domande che sto ponendo! Grazie :)
Rik Smith-Unna,

1
@Warren Non c'è bisogno di gridare, ma grazie per il promemoria, perché yihang ha effettivamente pubblicato una risposta migliore e aggiornata che ora ho accettato.
Konrad Rudolph,

13

Oggi ho visto qualcuno collegarsi a questo vecchio post. Il modo migliore per installare GCC in homebrew in questo momento è solo brew install gcc. Se hai XCode Command Line Tools (sono separati da XCode; puoi installarli con xcode-select --install) installato, verrà installata una versione precompilata (che è molto veloce).


3

Anch'io ho avuto questo problema. Inoltre, devo usare gfortran, che non viene fornito con l'installazione standard (obsoleta) di llvm-gcc di Mac.

Ho trovato le build di gcc ad alte prestazioni di aggiornamento per essere aggiornate e funzionano alla grande su Lion.


Ci ho provato Non solo non ha funzionato, ma la tecnica di installazione che sta usando è piuttosto pericolosa. Mi ci sono voluti circa un'ora per annullare attentamente tutto.
Bob Aman,

2
Oh, avrei dovuto dire di non installarlo come suggerisce. Ho semplicemente decompresso il file e creato un collegamento simbolico al binario che desidero, assicurandomi che il collegamento simbolico si trovi da qualche parte nel mio PERCORSO. Di solito questo viene fatto aggiungendo qualcosa di "locale" al mio percorso, come ~ / bin / o qualcosa del genere.
cm2

Sì, sarebbe molto più sano. La sua procedura di installazione è pazzesca e avrei dovuto supporre altrettanto piuttosto che provarlo alla cieca.
Bob Aman,

3

Nel caso in cui qualcuno guardi questo vecchio thread, sembra che homebrew / version, usato nella risposta attualmente accettata, sia stato deprecato a favore di homebrew / core . Corri e basta brew install <formula>.


Puoi spiegare come questo ha a che fare con la domanda del PO che è come installare GCC tramite Homebrew?
fsb,

@fsb La risposta è stata aggiornata.
Avi,

Questo è più di un commento sulla risposta accettata. Non dovrebbe essere una risposta in quanto non risponde alla domanda dei PO. Una volta che hai una reputazione sufficiente , sarai in grado di aggiungere commenti e porre domande di follow-up. Per guadagnare reputazione, rispondi a domande chiare e concise .
fsb,

Dovrebbe essere posta una nuova domanda per specificare la versione della birra in cui ciò cambia? Riparare questo vecchio post sembra a basso beneficio, alto ritardo.
bmike

Se avessi avuto sufficienti punti reputazione, avrei invece commentato la soluzione accettata. Sentiti libero di farlo da solo.
Avi

0

Potresti provare questo - https://github.com/kennethreitz/osx-gcc-installer - L'ho usato con successo dopo l'aggiornamento a Lion per compilare pacchetti con Homebrew e altri (Ruby).

Da leggere me:

Programma di installazione GCC per OSX Il download e l'installazione dell'enorme programma di installazione di Xcode è una seccatura se si desidera semplicemente GCC e gli strumenti correlati.

Il programma di installazione osx-gcc consente di installare i compilatori essenziali da pacchetti binari predefiniti o di creare il proprio programma di installazione.


Questo installa solo le versioni installate anche da Xcode. In altre parole: obsoleto, e in realtà non GCC ma LLVM-GCC.
Konrad Rudolph,

1
Non aggiornato: Sì. Il punto del pacchetto è che sono le utility fornite da Xcode, ma senza tutti gli altri componenti enormi necessari per Xcode. Non GNU GCC: sbagliato. /usr/bin/gccè un collegamento simbolico a llvm gcc, ma il riferimento esplicito /usr/bin/gcc-4.2o l'impostazione export CC="gcc-4.2"nel proprio file .bash_profile o file adatto mitiga anche il problema. (Vedi anche questa domanda Stack Overflow .)
Jason Salaz

2
Si noti che questo progetto è stato sostituito dagli strumenti da riga di comando ufficiali di Apple per Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken
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.