2009-07-22 6 views
24

Je suis sûr qu'il doit y avoir un moyen de faire cela. Comme vous êtes probablement au courant des dernières versions de Xcode (et en fait je pense que toutes les versions de Xcode) sur Leopard viennent avec GCC 4.0.1 et GCC 4.2. GCC 4.0.1 est le compilateur système par défaut tandis que GCC 4.2 est un compilateur facultatif que vous pouvez définir dans les paramètres du projet Xcode.Configurer GCC 4.2 comme le compilateur par défaut sous Mac OS X Leopard

Est-ce que quelqu'un sait comment définir GCC 4.2 comme le compilateur par défaut pour toutes les options? De préférence, l'utilisation de la ligne de commande ainsi que la configuration des scripts utilisent toujours GCC 4.0.1 plutôt que GCC 4.2, peu importe ce que je fais dans Xcode. Je suppose que c'est simplement un cas de changement d'une variable de chemin ou d'un tel, mais je suis perplexe sur celui-ci.

Toute aide est appréciée. Merci.

Répondre

19

ligne de commande d'utilisation pour tous les scripts configure:

cd /usr/bin 
    rm cc gcc c++ g++ 
    ln -s gcc-4.2 cc 
    ln -s gcc-4.2 gcc 
    ln -s c++-4.2 c++ 
    ln -s g++-4.2 g++ 

Faire un enregistrement des cibles de liens actuels, afin que vous puissiez les restaurer si vous voulez.

Si vous ne voulez pas changer les réglages au niveau système, ajoutez un répertoire dans PATH avant/usr/bin (par exemple, $HOME/bin), et faire les liens symboliques il

Je ne l'ai pas testé si cela affecte Projets Xcode, puisque je n'utilise pas Xcode (seulement en ligne de commande).

+0

Ceci était traité par le script 'gcc_select', mais il semble que Leopard/Xcode 3.1 ne le fournisse plus? Je n'ai pas utilisé OS X depuis des années, donc je suis un peu hors de contact ... – ephemient

+0

Merci, cela a résolu le problème. Juste à part si quelqu'un d'autre prévoit de faire cela, je recommande fortement de placer les nouveaux liens symboliques dans un répertoire différent de sorte que si vous voulez revenir à vos paramètres d'origine, vous devez supprimer les liens symboliques ou les déplacer vers un autre annuaire. – Cromulent

+0

Martin, une question connexe, comment pouvez-vous dire à setup.py/pydistutils.cfg quel CC et quel -arch utiliser? Par exemple, je veux seulement gcc-4.2 -arch ppc (parce que mon gcc-4.2 n'a pas /usr/bin/i686-apple-darwin8-g++-4.2.1). Merci – denis

18

Dans la fenêtre Projet ou Infos cible, définissez le paramètre de construction "Version du compilateur C/C++" (GCC_VERSION).

Ou dans la fenêtre d'informations sur la cible, vous pouvez changer la "règle du système C" pour votre version GCC préférée. Mise à jour: Concernant la ligne de commande je laisserais à Leopard la décision de ce qui devrait être le compilateur par défaut. Si vous voulez utiliser un compilateur différent avec des outils comme Autotools, configurez la variable CC.

CC=gcc-4.2 ./configure 

ou

export CC=gcc-4.2 
+0

Malheureusement, je sais déjà à propos de ceux-ci, mais ils sont par projet. Je parle de quand vous invoquez GCC de la ligne de commmand. Peu importe ce que je définis les règles pour Xcode, il utilisera toujours GCC 4.0.1 depuis la ligne de commande. – Cromulent

+0

ma faute désolé. Je le mets à jour – IlDan

+6

Je trouve 'export CC = gcc-X.Y' plus pratique (et * nix-like) comparé à la solution rm/ln -s. Facile à retourner si quelque chose ne va pas, facile à installer utilisateur/système, il suffit d'en éditer un .bash_profile (ou votre shell préféré). – lsdr

16

Depuis ni Ports Apple ni Darwin ont le programme gcc_select changer la version par défaut du compilateur du système (comme cela existe sur GNU/Linux), je voudrais être sur le côté sécuritaire avec XCode (et reste du système) et recommande de laisser les liens symboliques tels quels et de configurer à la place les variables d'environnement qui remplacent la version de GCC à utiliser.

Dans mon fichier .profile j'ai les suivantes

export CC=/usr/bin/gcc-4.2 
export CPP=/usr/bin/cpp-4.2 
export CXX=/usr/bin/g++-4.2 

Et je compilé les bibliothèques suivantes avec GCC 4.2 de la source.

  • OpenSSL
  • libjpeg
  • libpng
  • zlib
  • gst

... Mais je ne pouvais pas Boost 1.39 pour reconnaître les variables d'environnement, donc pour compiler Boost avec GCC 4.2, j'ai dû changer les liens symboliques dans/usr/bin/alors ils ont pointé vers gcc v4.2

Après un long moment, les bibliothèques Boost ont fini de compiler avec GCC 4.2 J'ai restauré les liens symboliques à la version originale du système gcc-4.0.

+0

Essayé cela et il n'a pas changé mon compilateur par défaut. – user124384

2

Puisque j'ai besoin de construire des choses où CC env est ignoré et que je finis par changer souvent, j'ai écrit un simple gcc_select en Python. Je pense que je peux aussi bien le poster ici. Appelez-le avec arg soit 4.0 ou 4.2 ou sans argument pour voir les liens symboliques actuels. Aurait besoin de modification si vous avez des versions autres que 4.0 et 4.2:

#!/usr/bin/python 
import sys 
import os 

os.chdir('/usr/bin') 

files = ['cc', 'gcc', 'c++', 'g++'] 

if '4.0' in sys.argv: 
    ver = '4.0' 
elif '4.2' in sys.argv: 
    ver = '4.2' 
else: 
    print "Unknown gcc version. Current setting:" 
    os.system('ls -al %s' % ' '.join(files)) 
    sys.exit(1) 

os.system('rm %s' % ' '.join(files)) 
for f in files: 
    os.system('ln -s %s-%s %s' % (f, ver, f)) 

print "Changed to gcc version %s" % ver 
3

Im mon expérience (limitée), le changement CC .profile ne change pas en défaut de Lion (10.7.2) à i686-pomme-darwin11-LLVM -gcc-4.2. Je me demande si cela n'a rien à voir avec sa propre liaison sym d'Apple: une partie: ls -la /usr/bin | grep .*gcc.*.

lrwxr-xr-x  1 root wheel  12 25 oct 19:31 cc -> llvm-gcc-4.2 
lrwxr-xr-x  1 root wheel  12 25 oct 19:31 gcc -> llvm-gcc-4.2 
lrwxr-xr-x  1 root admin  32 25 oct 19:31 llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2 

Je me méfie de briser ces derniers et en ajoutant mon propre dossier usr/bin/gcc-4.2 par Martin v Löwis de répondre.

2

Je peux me tromper, mais je pensais que c'était ce que Xcode-select était?

xcode-select --switch /path_to_tool_suite 

Comme je l'ai dit, je ne suis pas 100% à ce sujet, mais je crois qu'il sera mis en valeur par défaut pour tous les programmes, y compris Terminal et d'autres applications que les appels dans le système d'exploitation d'utiliser un compilateur.

Questions connexes