Wie installiere ich GCC über Homebrew?

Ich verwende ausschließlich Homebrew (dh ich verwende und werde MacPorts oder Fink nicht verwenden). Ich möchte auch manuelle Installationen auf ein absolutes Minimum beschränken. 1

… Aber wie kann ich GCC installieren?

Zunächst einmal habe ich natürlich Xcode installiert, aber die aktuelle Version wird nicht mit einem einigermaßen aktuellen GCC ausgeliefert (ich brauche mindestens 4.5, würde aber das neueste bevorzugen) – tatsächlich wird es nicht ausgeliefert mit einem richtigen GCC überhaupt (es versendet nur Clang) 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 einen bereits installierten GCC - zumindest brewschlägt das Eingeben mit Linker-Fehlern auf Lion fehl, die ich Clang zuschreibe, und -use-gccfunktioniert offensichtlich nicht Gründe dafür.

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


1 Ich habe zuvor MacPorts, Homebrew und einige manuelle Installationen gemischt und bin in einer Wartungs- und Versionierungshölle gelandet. Da möchte ich nicht noch einmal hin.

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 ich habe einfach Xcode aus dem MAS installiert. Auch was ist die Ausgabe von echo $PATH?
@Gio Ich habe die gleiche Ausgabe bekommen. $PATHist das Übliche (immerhin ist dies 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.
Warum Homebrew verwenden? MacPorts ist gut darin, mehrere Versionen von Compilern zu verwalten. Und MacPorts kann alles , was Homebrew kann.
@JeffBurdges Homebrew ist besser. In so ziemlich jeder Kategorie.
Wie so? Um ehrlich zu sein, mag ich Homebrew vor allem nicht, weil es (a) Paketbeschreibungen und (b) Mathematikpakete fehlt. Insgesamt hat MacPorts vielleicht sechsmal so viele Pakete wie Homebrew, aber ja, es sind die obskuren Pakete, die fehlen. Ich bin insgesamt zufrieden mit MacPorts, obwohl ich natürlich wünschte, sie würden sich in Sprachpaketmanager wie CPAN, CTAN, Caball usw. integrieren.
@Jeff Persönlich habe ich noch kein Paket gefunden, das nicht auf Homebrew war (trotz dieser Frage). Ich kann nicht über Mathepakete sprechen. Paketbeschreibungen sind vorhanden ( brew info …). Abgesehen von allen anderen Vorteilen ist die Benutzerfreundlichkeit einfach viel schöner, die Oberfläche moderner und das Erstellen eigener Formeln viel einfacher.
Homebrew hat nur Paketbeschreibungen für

Antworten (7)

Ich habe heute jemanden gesehen, der auf diesen alten Beitrag verlinkt hat. Der beste Weg, GCC im Moment in Homebrew zu installieren, ist einfach brew install gcc. Wenn Sie die XCode Command Line Tools (sie sind von XCode getrennt; Sie können sie mit xcode-select --installinstallieren) installiert haben, wird eine vorkompilierte Version installiert (was sehr schnell ist).

Ok und was ist, wenn ich ausführe xcode-select --installund es wirft xcode-select: error: command line tools are already installed, use "Software Update" to install updates. Dann liste ich Software-Updates auf, indem ich sie ausführe, softwareupdate -lund es wird nichts zum Aktualisieren ausgegeben (eine leere Liste), was bedeutet, dass XCode-Befehlszeilentools installiert sind.
Mir ist das nicht 100% klar, aber ich denke, macOS betrachtet Xcode als Ersatz für / Obermenge des CLT, Homebrew jedoch nicht. Sie können hier einen .pkg-Download herunterladen: developer.apple.com/download/more

Homebrew-Lösung

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

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

Wo [flags]sollten alle erforderlichen Sprachen enthalten sein, zB ( --enable-cxx --enable-fortran).

Dadurch werden die ausführbaren Dateien mit einem Suffix installiert, dh gcces muss darauf zugegriffen werden gcc-version, um Konflikte zu vermeiden. Bei Bedarf kann man entsprechende Symlinks erstellen, um diese Version zur Standardversion zu machen.

Manuelle Installation

Alternativ kann ein aktueller GCC (zum Zeitpunkt des Schreibens) manuell mit dem folgenden Shell-Skript 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ügt /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.

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 entschied ich mich für Apple v4.2 mit brew tap homebrew/dupesgefolgt von brew install apple-gcc42. Dies half mir, einen funktionierenden gcc und Wein zu bekommen. Sie können die Binärdateien auch (wie Homebrew) von hier herunterladen: r.research.att.com/tools
@iolsmit Sie sollten die Installation von GCC 4.7 auf jeden Fall erneut mit einem sauberen, aktuellen Homebrew versuchen. Es sollte wie ein Zauber funktionieren. Wenn nicht, melden Sie bitte einen Fehler bei den Betreuern von Homebrew-dupes.
brew tap homebrew/dupes; brew install gcc --use-llvm. Siehe github.com/Homebrew/homebrew-dupes/issues/20
@KonradRudolph, wo immer ich mich umdrehe, du beantwortest die Fragen, die ich stelle! Danke :)
Dies ist jetzt veraltet.
@Warren Keine Notwendigkeit zu schreien - aber danke für die Erinnerung, denn yihang hat tatsächlich eine bessere aktuelle Antwort gepostet, die ich jetzt akzeptiert habe.
Exzellent. Ich habe dieses hier ein wenig bearbeitet, damit es näher an der Wahrheit liegt, aber immer noch zu kompliziert ist.

Die von @Konrad Rudolph bereitgestellte Lösung 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 des Verfassens dieser Antwort sind beispielsweise die Versionen 4.5, 4.7 und 4.8 verfügbar. Sie können hier nachsehen, welche Versionen verfügbar sind .

Kurz gesagt, Sie können GCC 4.8 installieren, indem Sie verwenden

brew tap homebrew/versions
brew install [flags] gcc48

Sie können verfügbare Installationsflags anzeigen, indem Sie verwenden

brew options gcc48
Ich habe das versucht und ich habe es installiert, aber es stirbt so:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
@WarrenP Hast du mit irgendwelchen installiert [flags]? Auf meinen Maschinen habe ich ohne Flags installiert und es funktioniert einwandfrei. Warum versuchen Sie nicht, gcc-4.8ohne Eingabedatei anzurufen, und sehen, ob Sie einen schwerwiegenden Fehler erhalten? Versuchen Sie auch zu ls /usr/local/Cellar/gcc48/4.8.0/binsehen, ob dieses Verzeichnis gcc-4.8.
Es enthält zwar gcc-4.8 und gcc-4.8 --versionläuft, kann aber nicht zum sekundären Tool mit dem Namen ausgeführt aswerden und stirbt daher ab.
Hmm ... Ehrlich gesagt habe ich keine Ahnung, wie ich das lösen soll. Vielleicht müssen wir auf einen erfahreneren Benutzer warten ...
Wie füge g++ich als Befehl in meinem Terminal hinzu? muss ich in meinem /usr/bin einen Softlink /usr/local/Cellar/gcc48/4.8.1/bin/g++48erstellen?
@nkint Entweder das oder fügen alias g++='g++-4.8'Sie Ihre .bashrc.

Auch ich hatte dieses Problem. Außerdem muss ich gfortran verwenden, das nicht mit der (veralteten) Standardinstallation von Macs llvm-gcc geliefert wird.

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

Ich habe das versucht. Es hat nicht nur nicht funktioniert, sondern die Installationstechnik, die er verwendet, ist ziemlich gefährlich. Ich brauchte ungefähr eine Stunde, um alles sorgfältig rückgängig zu machen.
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, wobei ich sicherstelle, dass sich der Symlink irgendwo in meinem PATH befindet. Normalerweise geschieht dies, indem ich etwas "Lokales" zu meinem Pfad hinzufüge, wie ~/bin/ oder so.
Ja, das wäre viel vernünftiger. Seine Installationsprozedur ist verrückt und ich hätte einfach davon ausgehen sollen, anstatt es blind zu versuchen.

Falls sich jemand diesen alten Thread ansieht, scheint Homebrew/versions, das in der derzeit akzeptierten Antwort verwendet wird, zugunsten von homebrew/core veraltet zu sein . Lauf einfach .brew install <formula>

Können Sie bitte erklären, wie dies mit der Frage des OP zu tun hat, wie GCC über Homebrew installiert wird?
@fsb Antwort wurde aktualisiert.
Dies ist eher ein Kommentar zur akzeptierten Antwort. Es sollte selbst keine Antwort sein, da es die OP-Frage nicht beantwortet. Sobald Sie über einen ausreichenden Ruf verfügen , können Sie Kommentare hinzufügen und Folgefragen stellen. Beantworten Sie Fragen, die klar und prägnant sind, um sich einen Namen zu machen .
Sollte eine neue Frage gestellt werden, um die Brühversion anzugeben, in der sich dies ändert? Das Reparieren dieses alten Beitrags scheint wenig Nutzen und hohe Verzögerung zu haben.
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.

Sie können dies versuchen - 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 Read me:

OSX GCC Installer Das Herunterladen und Installieren des massiven Xcode-Installers ist ein riesiger Aufwand, wenn Sie nur GCC und verwandte Tools wollen.

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

Dadurch werden nur die Versionen installiert, die auch von Xcode installiert werden. Mit anderen Worten: veraltet und eigentlich nicht GCC, sondern LLVM-GCC.
Veraltet: Ja. Der Punkt des Pakets ist, dass es die von Xcode gelieferten Dienstprogramme sind, aber ohne all die anderen riesigen Komponenten, die für Xcode erforderlich sind. Nicht GNU GCC: Falsch. /usr/bin/gccist ein symbolischer Link 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 mindert das Problem ebenfalls. (Siehe auch diese Stack Overflow- Frage.)
Beachten Sie, dass dieses Projekt durch Apples offizielle Befehlszeilentools für Xcode ersetzt wurde: kennethreitz.org/essays/xcode-gcc-and-homebrew
Der Link kennethreitz.org/essays/xcode-gcc-and-homebrew ist jetzt schlecht.

Befehl: brew update brew install gcc-Speicherort: /usr/local/Cellar/gcc/10.2.0_4: 1 Befehl: brew update brew install app-Speicherort: /usr/local/Cellar/gpp/2.27