web-dev-qa-db-fra.com

Définition de GCC 4.2 comme compilateur par défaut sur Mac OS X Leopard

Je suis sûr qu'il doit y avoir un moyen de le faire. Comme vous le savez probablement, les dernières versions de Xcode (et en fait, je pense que toutes les versions de Xcode) sur Leopard sont livrées 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.

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

Toute aide est appréciée. Merci.

24
Cromulent

Utilisation de la ligne de commande pour tous les scripts de configuration:

  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++

Enregistrez les cibles de liens actuelles, afin de pouvoir les restaurer si vous le souhaitez.

Si vous ne souhaitez pas modifier les paramètres à l'échelle du système, ajoutez un répertoire dans PATH avant/usr/bin (par exemple, $HOME/bin), et y créer les liens symboliques

Je n'ai pas testé si cela affecte les projets Xcode, car je n'utilise pas Xcode (uniquement en ligne de commande).

19
Martin v. Löwis

Dans la fenêtre d'informations sur le projet ou la cible, définissez le paramètre de génération "Version du compilateur C/C++" (GCC_VERSION).

Ou dans la fenêtre d'informations sur la cible, vous pouvez modifier la "règle du système C" en votre version préférée de GCC.

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 souhaitez utiliser un compilateur différent avec des outils tels que la configuration automatique des outils, vous feriez mieux de définir la variable CC.

CC=gcc-4.2 ./configure

ou

export CC=gcc-4.2
18
IlDan

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

Dans mon fichier .profile j'ai les éléments suivants

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

Et j'ai réussi à compiler les bibliothèques suivantes avec GCC 4.2 à partir de la source.

  • OpenSSL
  • libjpeg
  • libpng
  • zlib
  • gst

Cependant ... je n'ai pas pu obtenir Boost 1.39 pour reconnaître les variables d'environnement, donc pour compiler Boost avec GCC 4.2, je devais changer les liens symboliques dans/usr/bin/donc ils ont pointé vers gcc v4.2

Après une longue période de compilation des bibliothèques Boost avec GCC 4.2, j'ai restauré les liens symboliques vers la version d'origine du système gcc-4.0.

16
user156592

D'après mon expérience (limitée), la modification de CC dans .profile ne change pas Lion (10.7.2) par défaut en i686-Apple-darwin11-llvm-gcc-4.2. Je me demande si cela a quelque chose à voir avec la propre liaison sym d'Apple: un partiel: 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 les casser et d'ajouter les miens à usr/bin/gcc-4.2 selon la réponse de Martin c. Löwis.

3
Centzon

Je me trompe peut-être, mais je pensais que c'était à ça que servait Xcode-select?

xcode-select --switch /path_to_tool_suite

Comme je l'ai dit, je ne suis pas à 100% à ce sujet, mais je pense que cela définira la valeur par défaut pour tous les programmes, y compris Terminal et d'autres applications qui appellent le système d'exploitation pour utiliser un compilateur.

2
user1712937

Comme j'ai besoin de construire des choses où CC env est ignoré et que je finis souvent par changer, j'ai écrit un gcc_select simple d'esprit en Python. Je pensais aussi bien le poster ici. Appelez-le avec arg 4.0 ou 4.2 ou sans arg pour voir les liens symboliques actuels. Aurait besoin d'une 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
2
Stephan Deibel