2009-07-22 15 views
24

Estoy seguro de que debe haber una forma de hacerlo. Como probablemente sabrá, las últimas versiones de Xcode (y de hecho creo que todas las versiones de Xcode) en Leopard vienen con GCC 4.0.1 y GCC 4.2. GCC 4.0.1 es el compilador del sistema predeterminado, mientras que GCC 4.2 es un compilador opcional que puede establecer en la configuración del proyecto Xcode.Configuración de GCC 4.2 como el compilador predeterminado en Mac OS X Leopard

¿Alguien sabe cómo configurar GCC 4.2 como el compilador predeterminado para todas las opciones? Preferiblemente, el uso de la línea de comandos y la configuración de scripts aún usan GCC 4.0.1 en lugar de GCC 4.2, sin importar lo que haga en Xcode. Estoy asumiendo que es simplemente un caso de cambiar una variable de ruta o algo así, pero estoy perplejo en este caso.

Cualquier ayuda es apreciada. Gracias.

Respuesta

19

uso de la línea de comandos para configurar el ajuste de guiones:

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

hacer un registro de los destinos de vínculos actuales, para que pueda restaurarlos si así lo desea.

Si no desea cambiar la configuración de todo el sistema, añadir un directorio en el PATH antes de/usr/bin (por ejemplo, $HOME/bin), y los enlaces simbólicos no

No he probado si esto afecta Proyectos de Xcode, ya que no uso Xcode (solo línea de comando).

+0

Esto solía ser manejado por el script 'gcc_select', pero parece que Leopard/Xcode 3.1 ya no lo proporciona? No he usado OS X en años, así que estoy un poco fuera de contacto ... – ephemient

+0

Gracias, eso solucionó el problema. Del mismo modo, si alguien más está planeando hacer esto, le recomiendo que coloque los nuevos enlaces simbólicos en un directorio diferente para que, si alguna vez desea volver a su configuración original, simplemente tiene que eliminar los enlaces simbólicos o moverlos a un lugar diferente. directorio. – Cromulent

+0

Martin, una pregunta relacionada, ¿cómo puede decirle a setup.py/pydistutils.cfg qué CC y qué búsqueda utilizar? Por ejemplo, quiero gcc-4.2 -arch ppc solamente (porque mi gcc-4.2 no tiene /usr/bin/i686-apple-darwin8-g++-4.2.1). Gracias – denis

18

En la ventana de proyecto o de información de destino configure la configuración de compilación "Versión del compilador C/C++" (GCC_VERSION).

O en la ventana de información de destino puede cambiar la "regla del sistema C" a su versión GCC favorita.

Actualización: Con respecto a la línea de comando, dejaría a Leopard la decisión de cuál debería ser el compilador predeterminado. Si desea utilizar un compilador diferente con herramientas como Autotools configure, es mejor que defina la variable CC.

CC=gcc-4.2 ./configure 

o

export CC=gcc-4.2 
+0

Desafortunadamente, ya sé sobre eso, pero son por proyecto. Me refiero a cuando invocas a GCC desde la línea de comando. No importa en qué establezca las reglas en Xcode, siempre usará GCC 4.0.1 desde la línea de comandos. – Cromulent

+0

mi culpa lo siento. Lo estoy actualizando – IlDan

+6

Encuentro 'export CC = gcc-X.Y' más práctico (y * nix-like) en comparación con la solución rm/ln -s. Fácil de revertir si algo sale mal, fácil de configurar para el usuario/sistema, solo requiere uno para editar .bash_profile (o su shell rc favorito). – lsdr

16

Desde ni Apple ni Darwin Los puertos tienen el programa gcc_select para cambiar la versión predeterminada del compilador Sistema (como el que existe en GNU/Linux), me gustaría estar en el lado seguro con XCode (y el resto del sistema) y recomendaría dejar los enlaces simbólicos tal como están y en su lugar configurar las variables de entorno que anulan qué versión de GCC usar.

En mi archivo .profile Tengo el siguiente

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

Y compilado correctamente las siguientes bibliotecas con GCC 4.2 de origen.

  • OpenSSL
  • libjpeg
  • libpng
  • zlib
  • GST

Sin embargo ... no pude conseguir Boost 1.39 para reconocer las variables de entorno, así que para compilar Boost con GCC 4.2 tuve que cambiar los enlaces simbólicos en/usr/bin/por lo que apuntaron a gcc v4.2

Después de tanto tiempo las bibliotecas de Boost terminaron de compilar con GCC 4.2 Restaure los enlaces simbólicos a la versión original del sistema gcc-4.0.

+0

Probé esto y no cambió mi compilador predeterminado. – user124384

2

Como necesito crear cosas donde se ignora el CC env y termino cambiando a menudo, escribí un sencillo gcc_select en Python. Pensé que también podría publicarlo aquí. Invocarlo con arg 4.0 o 4.2 o sin arg para ver los enlaces simbólicos actuales. Necesitaría modificación si tiene versiones distintas de 4.0 y 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 mi experiencia (limitada), el cambio de CC en .profile no cambia (10.7.2) el impago de i686-manzana-darwin11-llvm de León -gcc-4.2. Me pregunto si esto tiene algo que ver con la propia vinculación sym de Apple: un parcial: 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 

me gusta la idea de romper estos y añadir mi propia a usr/bin/gcc-4.2 por Martin v Löwis de responder.

2

Podría estar equivocado, pero pensé que ¿para qué era Xcode-select?

xcode-select --switch /path_to_tool_suite 

Como ya he dicho, no estoy 100% en esto, pero creo que va a establecer el valor predeterminado para todos los programas incluidos terminales y otras aplicaciones que pone en el sistema operativo para utilizar un compilador.

Cuestiones relacionadas