Comment installer GCC via Homebrew?

79

J'utilise exclusivement Homebrew (c. -à-d. Que je n'utilise pas et que je n'utiliserai pas MacPorts ou Fink). Je souhaite également limiter les installations manuelles au minimum. 1

… Mais comment puis-je installer GCC?

Tout d’abord, j’ai bien sûr installé Xcode, mais la version actuelle n’est pas livrée avec un GCC à jour décent (j’ai besoin d’au moins 4,5, mais je préférerais le plus récent) - en fait, il n’est pas livré. avec un bon GCC à tous (il seulement des navires Clang) et qui semble être un problème pour Homebrew ...

Je connais une liste de GCC personnalisés et de compilateurs croisés, mais en fait, toutes ces installations nécessitent un GCC déjà installé - du moins, brewleur échec avec des erreurs d’éditeur de liens sur Lion que j’attribue à Clang et -use-gccne fonctionne pas pour évident. les raisons.

brew doctor mentionne seulement ce que je sais déjà, qu’il n’ya pas de GCC (4.2.x) installé.


1 Auparavant, je mélangeais MacPorts, Homebrew et certaines installations manuelles et je me suis retrouvé avec un enfer de maintenance et de gestion des versions. Je ne veux pas y retourner.

Konrad Rudolph
la source
Quelle est la sortie de gcc --version? Je reçois i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)et j'ai simplement installé Xcode à partir du MAS. Aussi quelle est la sortie de echo $PATH?
Gio
@Gio j'ai la même sortie. $PATHest l’habituel (c’est un système presque vide, après tout): /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin… mais je ne pense pas que cela compte. Les formules fournies par homebrew-alt sont simplement obsolètes et ne fonctionnent pas avec Clang.
Konrad Rudolph
1
Pourquoi utiliser Homebrew? MacPorts gère bien plusieurs versions de compilateurs. Et MacPorts peut faire tout ce que peut faire Homebrew.
Jeff Burdges
@JeffBurdges Homebrew est meilleur. Dans à peu près n'importe quelle catégorie.
Konrad Rudolph
2
Comment? Pour être honnête, je n'aime pas Homebrew principalement parce qu'il lui manque (a) des descriptions de package et (b) des packages mathématiques. Globalement, MacPorts a peut-être six fois plus de paquets qu'Homebrew, mais oui, ce sont les paquets obscurs qui manquent. Je suis satisfait de MacPorts dans son ensemble, bien que je souhaite évidemment qu'ils intègrent des gestionnaires de packages linguistiques tels que CPAN, CTAN, Caball, etc.
Jeff Burdges

Réponses:

30

La solution fournie par @Konrad Rudolph n’est plus tout à fait correcte car la formule de GCC dont il a parlé a été déplacée de homebrew/dupesà homebrew/versions. Vous pouvez choisir quelle version de GCC installer. Par exemple, au moment de la rédaction de cette réponse, les versions 4.5, 4.7 et 4.8 sont disponibles. Vous pouvez vérifier quelles versions sont disponibles ici .

En bref, vous pouvez installer GCC 4.8 en utilisant

brew tap homebrew/versions
brew install [flags] gcc48

Vous pouvez afficher les indicateurs d'installation disponibles à l'aide de

brew options gcc48
Yihangho
la source
J'ai essayé ça et je l'ai eu pour l'installer mais ça meurt comme ça:gcc-4.8 hello.c gcc-4.8: error trying to exec 'as': execvp: No such file or directory
Warren P
@WarrenP Avez-vous installé avec [flags]? Sur mes machines, j'ai installé sans drapeaux et cela fonctionne bien. Pourquoi ne pas essayer d'appeler gcc-4.8sans aucun fichier d'entrée et voir si vous obtenez une erreur fatale? Essayez également de ls /usr/local/Cellar/gcc48/4.8.0/binvoir si ce répertoire contient gcc-4.8.
mardi
Il contient gcc-4.8 et gcc-4.8 --versions'exécute mais il ne peut pas s'exécuter sur l'outil secondaire nommé aset il meurt.
Warren P
Hmm ... Franchement, je n'ai aucune idée de comment résoudre ce problème. Peut-être devrions-nous attendre un utilisateur plus expérimenté ...
yihangho
2
@nkint Soit ça ou ajouter alias g++='g++-4.8'dans votre .bashrc.
yihangho
38

Solution Homebrew

Pour répondre à ma propre question, a homebrew-versionsmaintenant une formule assez à jour de GCC . Il peut être installé en utilisant

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

[flags]devrait inclure toutes les langues requises, par exemple ( --enable-cxx --enable-fortran).

Cela installera les exécutables avec un suffixe, c’est- gccà- dire qu’il faut y accéder de manière gcc-versionà éviter les conflits. Si nécessaire, vous pouvez créer des liens symboliques appropriés pour définir cette version par défaut.

Installation manuelle

Alternativement , un GCC à jour (au moment de l'écriture) peut être compilé manuellement à l'aide du script shell suivant:

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

Cela mettra GCC en scène sur le chemin /usr/gcc-4.7.0. Il ne vous reste plus qu'à créer des liens symboliques vers les exécutables ou ajouter le binrépertoire à la $PATHvariable.

Konrad Rudolph
la source
1
En essayant de compiler une version de travail de wine, j’ai aussi rencontré le problème d’un gcc manquant - malheureusement, l’installation de la v4.7 via homebrew m’a apporté quelques erreurs; alors je suis allé pour le Apple v4.2 en utilisant brew tap homebrew/dupessuivi par brew install apple-gcc42. Cela m'a aidé à obtenir un gcc et un vin de travail. Vous pouvez également obtenir les fichiers binaires (comme le fait l'homebrew) à partir d'ici: r.research.att.com/tools
iolsmit
@iolsmit Vous devez absolument essayer à nouveau l'installation de GCC 4.7 avec un Homebrew propre et à jour. Cela devrait fonctionner comme un charme. Si ce n'est pas le cas, veuillez signaler un bogue aux responsables de Homebrew-dupes.
Konrad Rudolph
3
brew tap homebrew/dupes; brew install gcc --use-llvm. Voir github.com/Homebrew/homebrew-dupes/issues/20
phs
@ KonradRudolph partout où je me tourne, vous répondez aux questions que je vous pose! Merci :)
Rik Smith-Unna
1
@Warren Pas besoin de crier - mais merci pour le rappel, car yihang a en fait posté une meilleure réponse à jour que j'ai maintenant acceptée.
Konrad Rudolph
13

J'ai vu quelqu'un créer un lien vers cet ancien post aujourd'hui. La meilleure façon d’installer GCC dans l’homebrew à l’heure actuelle est tout simplement brew install gcc. Si vous avez les outils de ligne de commande XCode (ils sont distincts de XCode; vous pouvez les installer avec xcode-select --install) installés, une version précompilée sera installée (ce qui est très rapide).

Tim Smith
la source
3

Moi aussi j'ai eu ce problème. De plus, j’ai besoin d’utiliser gfortran, qui ne vient pas avec l’installation standard (obsolète) du llvm-gcc de Mac.

J'ai trouvé que les compilations gcc de High Performance Computing étaient à jour et fonctionnaient très bien sur Lion.

cm2
la source
J'ai essayé ça. Non seulement cela n'a pas fonctionné, mais la technique d'installation qu'il utilise est assez dangereuse. Il m'a fallu environ une heure pour tout défaire soigneusement.
Bob Aman
2
Oh, j'aurais dû dire que je ne l'installe pas comme il le suggère. Je viens de décompresser le fichier et de faire un lien symbolique vers le binaire que je veux, en m'assurant que ce lien symbolique est quelque part dans mon chemin Cela se fait généralement en ajoutant quelque chose de "local" à mon chemin, comme ~ / bin / ou quelque chose.
cm2
Ouais, ce serait beaucoup plus sain d'esprit. Sa procédure d'installation est effrénée et j'aurais dû le supposer au lieu d'essayer l'aveuglette.
Bob Aman
3

Si quelqu'un regarde ce vieux fil, il semble que les versions homebrew / utilisées dans la réponse actuellement acceptée ont été déconseillées au profit de homebrew / core . Il suffit de courir brew install <formula>.

Avi
la source
Pouvez-vous expliquer en quoi cela a à voir avec la question de l'OP, à savoir comment installer GCC via Homebrew?
fsb
@fsb Answer est mis à jour.
Avi
C'est plus un commentaire sur la réponse acceptée. Cela ne devrait pas être une réponse en soi, car cela ne répond pas à la question des PO. Une fois que votre réputation est suffisante, vous pourrez ajouter des commentaires et poser des questions complémentaires. Pour gagner en réputation, répondez aux questions qui sont claires et concises .
fsb
Devrait-on poser une nouvelle question pour spécifier la version de la bière où cela change? La réparation de cet ancien poste semble présenter un faible bénéfice, un retard élevé.
bmike
Si j'avais suffisamment de points de réputation, j'aurais plutôt commenté la solution acceptée. N'hésitez pas à le faire vous-même.
Avi
0

Vous pouvez essayer ceci - https://github.com/kennethreitz/osx-gcc-installer - je l'ai utilisé avec succès après la mise à niveau vers Lion pour compiler des packages avec Homebrew et d'autres (Ruby).

De la lecture moi:

Programme d'installation OSX GCC Le téléchargement et l'installation de l'installateur massif Xcode est un gros problème si vous souhaitez simplement utiliser GCC et les outils associés.

Osx-gcc-installer vous permet d'installer les compilateurs essentiels à partir de packages binaires pré-construits ou vous aide à créer votre propre programme d'installation.

Darren Newton
la source
Cela installe uniquement les versions également installées par Xcode. En d'autres termes: obsolète, et pas réellement GCC mais LLVM-GCC.
Konrad Rudolph
1
Obsolète: oui. L'intérêt du paquet est que ce sont les utilitaires fournis par Xcode, mais sans tous les autres composants volumineux nécessaires à Xcode. Non GNU GCC: faux. /usr/bin/gccest un lien symbolique vers gcc LLVM, mais une référence explicite /usr/bin/gcc-4.2ou paramètre export CC="gcc-4.2"dans votre .bash_profile ou fichier approprié atténue la question ainsi. (Voir aussi cette question Stack Overflow .)
Jason Salaz
2
Notez que ce projet a été remplacé par les outils de ligne de commande officiels d'Apple pour Xcode: kennethreitz.org/essays/xcode-gcc-and-homebrew
Arto Bendiken