Wie installiere ich GCC über Homebrew?

79

Ich verwende ausschließlich Homebrew (dh ich verwende weder MacPorts noch Fink). Ich möchte auch manuelle Installationen auf ein Minimum beschränken. 1

… Aber wie kann ich GCC installieren?

Zunächst habe ich natürlich Xcode installiert, aber die aktuelle Version wird nicht mit einem anständigen, aktuellen GCC ausgeliefert (ich benötige mindestens 4.5, würde aber den neuesten vorziehen) - tatsächlich wird sie nicht ausgeliefert mit einem richtigen GCC überhaupt (es wird nur Clang ausgeliefert) und das scheint ein Problem für Homebrew zu sein ...

Mir ist eine Liste von benutzerdefinierten GCC- und Cross-Compilern bekannt, aber tatsächlich erfordern alle diese Installationen ein bereits installiertes GCC. Zumindest brewschlägt dies mit Linker-Fehlern auf Lion fehl, die ich Clang zuschreibe, und -use-gccsie funktionieren offensichtlich nicht Gründe dafür.

brew doctor Erwähnt nur, was ich bereits weiß, dass kein GCC (4.2.x) installiert ist.


1 Ich habe vorher MacPorts, Homebrew und einige manuelle Installationen gemischt und hatte eine Hölle mit Wartung und Versionierung. Ich möchte nicht wieder dorthin gehen.

Konrad Rudolph
quelle
Was ist die Ausgabe von gcc --version? Ich bekomme i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)und installiere einfach Xcode vom MAS. Auch was ist die Ausgabe von echo $PATH?
Gio
@Gio Ich habe die gleiche Ausgabe. $PATHist das Übliche (das ist immerhin ein fast leeres System): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin… aber ich denke nicht, dass das wichtig ist. Die von homebrew-alt bereitgestellten Formeln sind einfach veraltet und funktionieren nicht mit Clang.
Konrad Rudolph
1
Warum Homebrew verwenden? MacPorts ist gut darin, mehrere Versionen von Compilern zu verwalten. Und MacPorts kann alles , was Homebrew kann.
Jeff Burdges
@ JeffBurdges Homebrew ist besser. In so ziemlich jeder Kategorie.
Konrad Rudolph
2
Wie? Um ehrlich zu sein, mag ich Homebrew meistens nicht, nur weil es keine (a) Paketbeschreibungen und (b) Mathematikpakete enthält. Insgesamt hat MacPorts vielleicht sechsmal so viele Pakete wie Homebrew, aber es sind die dunklen Pakete, die fehlen. Insgesamt bin ich mit MacPorts zufrieden, obwohl ich mir natürlich wünsche, dass sie sich in Sprachpaketmanager wie CPAN, CTAN, Caball usw. integrieren.
Jeff Burdges,

Antworten:

30

Die Lösung von @Konrad Rudolph ist nicht mehr ganz korrekt, da die von ihm erwähnte GCC-Formel von homebrew/dupesnach verschoben wurde homebrew/versions. Sie können auswählen, welche Version von GCC installiert werden soll. Zum Zeitpunkt der Erstellung dieser Antwort sind beispielsweise die Versionen 4.5, 4.7 und 4.8 verfügbar. Sie können hier nachschauen, welche Versionen verfügbar sind .

Kurz gesagt, Sie können GCC 4.8 mithilfe von installieren

brew tap homebrew/versions
brew install [flags] gcc48

Mit können Sie die verfügbaren Installationsflags anzeigen

brew options gcc48
yihangho
quelle
Ich habe es versucht und ich habe es installiert, aber es stirbt wie folgt:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P
@WarrenP Hast du mit welche installiert [flags]? Auf meinen Rechnern habe ich keine Flags installiert und es funktioniert einwandfrei. Warum versuchen Sie nicht, gcc-4.8ohne Eingabedatei aufzurufen und zu prüfen, ob ein schwerwiegender Fehler auftritt? Versuchen Sie auch, festzustellen, ls /usr/local/Cellar/gcc48/4.8.0/binob dieses Verzeichnis enthält gcc-4.8.
Yihangho
Es enthält gcc-4.8 und wird ausgeführt gcc-4.8 --version, kann jedoch nicht auf das genannte sekundäre Tool ausgeführt werden asund stirbt daher ab.
Warren P
Hmm ... Ehrlich gesagt habe ich keine Ahnung, wie ich das lösen soll. Vielleicht müssen wir auf einen erfahreneren Benutzer warten ...
yihangho
2
@nkint Entweder das oder alias g++='g++-4.8'in deinem .bashrc.
Yihangho
38

Homebrew-Lösung

Um meine eigene Frage zu beantworten, hat homebrew-versionsjetzt eine ziemlich aktuelle Formel von GCC . Es kann mit installiert werden

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

Wo [flags]sollen alle benötigten Sprachen enthalten sein, zB ( --enable-cxx --enable-fortran).

Dadurch werden die ausführbaren Dateien mit einem Suffix installiert, dh es gccmuss darauf zugegriffen werden gcc-version, um Konflikte zu vermeiden. Bei Bedarf können entsprechende Symlinks erstellt werden, um diese Version als Standard festzulegen.

Manuelle Installation

Alternativ kann ein aktueller GCC (zum Zeitpunkt des Schreibens) mithilfe des folgenden Shell-Skripts manuell kompiliert werden :

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

Dadurch wird GCC in den Pfad eingeführt /usr/gcc-4.7.0. Jetzt müssen Sie nur noch Symlinks zu den ausführbaren Dateien erstellen oder das binVerzeichnis zur $PATHVariablen hinzufügen .

Konrad Rudolph
quelle
1
Beim Versuch, eine funktionierende Version von wine zu kompilieren, stieß ich auch auf das Problem eines fehlenden gcc. Leider gab mir die Installation von v4.7 über Homebrew einige Fehler. Also habe ich mich für Apple v4.2 entschieden, brew tap homebrew/dupesgefolgt von brew install apple-gcc42. Dies half mir, einen funktionierenden GCC und Wein zu bekommen. Sie können die Binaries auch hier herunterladen
iolsmit
@iolsmit Auf jeden Fall sollten Sie die GCC 4.7-Installation mit einem sauberen, aktuellen Homebrew erneut versuchen. Es sollte wie ein Zauber wirken. Wenn nicht, melden Sie sich bitte bei den Betreuern von Homebrew-dupes.
Konrad Rudolph
3
brew tap homebrew/dupes; brew install gcc --use-llvm. Siehe github.com/Homebrew/homebrew-dupes/issues/20
phs
@KonradRudolph überall, wo ich abbiege, beantworten Sie die Fragen, die ich stelle! Danke :)
Rik Smith-Unna
1
@Warren Kein Grund zu schreien - aber danke für die Erinnerung, weil yihang tatsächlich eine aktuellere Antwort gepostet hat, die ich jetzt akzeptiert habe.
Konrad Rudolph
13

Ich habe heute jemanden gesehen, der auf diesen alten Beitrag verweist. Der beste Weg, um GCC jetzt in Homebrew zu installieren, ist einfach brew install gcc. Wenn Sie die XCode-Befehlszeilentools (die nicht mit XCode identisch sind, sondern mit denen Sie sie installieren können xcode-select --install) installiert haben, wird eine vorkompilierte Version installiert (die sehr schnell ist).

Tim Smith
quelle
3

Auch ich hatte dieses Problem. Außerdem muss ich gfortran verwenden, was mit der (veralteten) Standardinstallation von llvm-gcc auf dem Mac nicht mitgeliefert wird.

Ich habe festgestellt, dass die High Performance Computing- Builds von gcc auf dem neuesten Stand sind und bei Lion hervorragend funktionieren.

cm2
quelle
Ich habe es versucht. Es hat nicht nur nicht funktioniert, sondern die von ihm verwendete Installationstechnik ist ziemlich gefährlich. Ich brauchte ungefähr eine Stunde, um alles sorgfältig rückgängig zu machen.
Bob Aman
2
Oh, ich hätte sagen sollen, dass ich es nicht so installiere, wie er es vorschlägt. Ich entpacke einfach die Datei und erstelle einen Symlink zu der gewünschten Binärdatei. Dabei stelle ich sicher, dass sich der Symlink irgendwo in meinem PATH befindet. Normalerweise wird dazu etwas "Lokales" in meinen Pfad eingefügt, z. B. ~ / bin / oder so.
cm2
Ja, das wäre viel vernünftiger. Seine Installationsprozedur ist verdammt verrückt, und ich hätte genau das annehmen sollen, anstatt es blind zu versuchen.
Bob Aman
3

Falls sich jemand diesen alten Thread ansieht, scheint es, dass Homebrew / Versionen, die in der derzeit akzeptierten Antwort verwendet werden, zugunsten von Homebrew / Core veraltet sind . Renn einfach .brew install <formula>

Avi
quelle
Können Sie bitte erklären, wie dies mit der Frage des OP zu tun hat, wie GCC über Homebrew installiert werden kann?
fsb
@fsb Antwort ist aktualisiert.
Avi
Dies ist eher ein Kommentar zur akzeptierten Antwort. Es sollte selbst keine Antwort sein, da es die Frage des OP nicht beantwortet. Sobald Sie eine ausreichende Reputation haben , können Sie Kommentare hinzufügen und weitere Fragen stellen. Beantworten Sie klare und präzise Fragen, um sich einen guten Ruf zu sichern .
2.
Sollte eine neue Frage gestellt werden, um die Version des Suds anzugeben, bei der sich dies ändert? Das Reparieren dieses alten Postens scheint ein geringer Nutzen zu sein, eine hohe Verzögerung.
bmike
Wenn ich genügend Reputationspunkte hätte, hätte ich stattdessen die akzeptierte Lösung kommentiert. Fühlen Sie sich frei, das selbst zu tun.
Avi
0

Möglicherweise versuchen Sie Folgendes: https://github.com/kennethreitz/osx-gcc-installer. Ich habe es nach dem Upgrade auf Lion erfolgreich verwendet, um Pakete mit Homebrew und anderen (Ruby) zu kompilieren.

Aus dem lies mich:

OSX GCC-Installationsprogramm Das Herunterladen und Installieren des umfangreichen Xcode-Installationsprogramms ist sehr mühsam, wenn Sie nur GCC und verwandte Tools benötigen.

Mit dem osx-gcc-installer können Sie die wesentlichen Compiler entweder aus vorgefertigten Binärpaketen installieren oder Ihren eigenen Installer erstellen.

Darren Newton
quelle
Dadurch werden nur die Versionen installiert, die auch von Xcode installiert wurden. Mit anderen Worten: veraltet und nicht wirklich GCC, sondern LLVM-GCC.
Konrad Rudolph
1
Veraltet: ja Der Sinn des Pakets ist, dass es sich um die von Xcode gelieferten Dienstprogramme handelt, jedoch ohne alle anderen riesigen Komponenten, die für Xcode erforderlich sind. Nicht GNU GCC: Falsch. /usr/bin/gccist ein Symlink zu llvm gcc, aber ein expliziter Verweis auf /usr/bin/gcc-4.2oder eine Einstellung export CC="gcc-4.2"in Ihrem .bash_profile oder einer geeigneten Datei mildert das Problem ebenfalls. (Siehe auch diese
Stapelüberlauf-
2
Beachten Sie, dass dieses Projekt von Apples offiziellen Befehlszeilentools für Xcode abgelöst wurde: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken