web-dev-qa-db-fra.com

Mettre à jour GCC sur OSX

Je suis donc un nouveau programmeur et je viens d'installer XCode sur mon Macbook pour obtenir le GCC. Je pense que Xcode est le seul moyen d'obtenir GCC sur OSX. Maintenant, lorsque j'exécute mon application Hello World, en C++, g ++ apparaît en disant que c'est la version 4.0.1 mais quand je cherche des commandes commençant par g, je vois aussi g ++ - 4.2. Existe-t-il un moyen de définir 4.2 par défaut plutôt que 4.0.1, et existe-t-il également un moyen de mettre à jour gcc vers la dernière version 4.4.0?

EDIT: Ok, j'ai donc installé macports et installé gcc4.4 et il apparaît sur le terminal comme gcc-mp-4.4 et comment puis-je le rendre par défaut avec gcc_select, comme quelles sont les commandes et les trucs. Merci.

60
Karan Bhamra

Si vous installez macports, vous pouvez installer gcc select, puis choisir votre version gcc.

/opt/local/bin/port install gcc_select

Pour voir vos versions, utilisez

port select --list gcc

Pour sélectionner une version, utilisez

Sudo port select --set gcc gcc40
61
Milhous

Je sais que c'est une vieille demande. Mais cela pourrait encore être utile à certains. Avec les versions actuelles de MacPorts, vous pouvez choisir la version gcc par défaut à l'aide de la commande port. Pour répertorier les versions disponibles de gcc, utilisez:

$ Sudo port select --list gcc

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

Pour définir gcc sur la version MacPorts:

$ Sudo port select --set gcc mp-gcc46

36
Briand06

Je m'arrête juste pour dire que l'utilisation d'un lien logiciel pour accomplir cela est une idée terrible, pas bonne et horrible.

L'un des éléments clés de l'écriture de logiciels est la reproductibilité - vous voulez pouvoir obtenir les mêmes résultats à chaque fois. Ces systèmes sont si complexes que vous souhaitez réduire toutes les sources d'erreur invisibles.

Avoir un lien logiciel est une source d'erreur invisible. C'est le genre de chose que vous oublierez dans un mois, puis passez à une autre machine, et demandez-vous pourquoi vous obtenez des résultats différents - ou, vous essayerez de mettre à niveau votre système, et vous obtiendrez des erreurs étranges parce que ce n'est pas attend un lien logiciel là-bas.

De plus, cela n'est pas garanti de fonctionner - en particulier, il n'est pas clair que vous obtiendrez les bons fichiers système, qui ont certainement changé entre les itérations de gcc.

gcc_select est un moyen systématique de faire la même chose qui fonctionnera de manière prévisible, ou dans le pire des cas, vous pouvez déposer un rapport de bogue et obtenir un éventuel correctif ou le corriger vous-même.

Malheureusement :-( gcc_select n'affecte pas quel compilateur XCode utilise donc ce n'est pas la voie à suivre si vous avez besoin de travailler dans XCode (ce que je fais). Je ne sais toujours pas ce que cela pourrait être.

13
Tom Swirly

La recette suivante utilisant Homebrew a fonctionné pour moi pour mettre à jour vers gcc/g ++ 4.7:

$ brew tap SynthiNet/synthinet
$ brew install gcc47

Trouvé sur un post ici .

2
Juan A. Navarro

utilisez "gcc_select -l"

> gcc_select -l

gcc40 mp-gcc44

> gcc_select mp-gcc44

2
user252445

dans /usr/bin type

Sudo ln -s -f g++-4.2 g++

Sudo ln -s -f gcc-4.2 gcc

Ça devrait le faire.

1
peter

Vous pouvez avoir plusieurs versions de GCC sur votre box, pour sélectionner celle que vous souhaitez utiliser, appelez-la avec le chemin complet, par ex. au lieu de g++ utilise le chemin complet /usr/bin/g++ sur la ligne de commande (dépend de l'emplacement de votre gcc).

Pour la compilation de projets, cela dépend du système que vous utilisez, je ne suis pas sûr de Xcode (je suis satisfait de l'atmosphère par défaut), mais lorsque vous utilisez Makefiles, vous pouvez définir GXX =/usr/bin/g ++ et ainsi de suite.

[~ # ~] modifier [~ # ~]

Il existe maintenant un script xcrun qui peut être interrogé pour sélectionner la version appropriée des outils de construction sur mac. Excepté man xcrun J'ai googlé cette explication sur xcode et outils de ligne de commande qui résume à peu près comment l'utiliser.

1
stefanB