2009-05-08 20 views
55

Así que soy un nuevo programador y acabo de instalar XCode en mi Macbook para obtener el GCC. Creo que Xcode es la única forma de obtener GCC en OSX. Ahora cuando ejecuto mi aplicación Hello World, en C++, g ++ aparece diciendo que es la versión 4.0.1, pero cuando busco comandos que comiencen con g, también veo g ++ - 4.2. ¿Hay alguna forma de hacer 4.2 por defecto en lugar de 4.0.1, y también hay una forma de actualizar gcc a la última versión 4.4.0?Actualizar GCC en OSX

EDIT: Ok, entonces instalé macports e instalé gcc4.4 y aparece en la terminal como gcc-mp-4.4 y cómo lo hago predeterminado con gcc_select, como cuáles son los comandos y esas cosas. Gracias.

Respuesta

57

Si instala macports puede instalar gcc select y luego elegir su versión de gcc.

/opt/local/bin/port install gcc_select 

Para ver sus versiones utilizan

port select --list gcc 

Para seleccionar una versión usar

sudo port select --set gcc gcc40 
+0

No tengo ese puerto instalado, pero todavía tengo gcc_select. Este es un Xcode más antiguo con OS X 10.4 sin embargo. – mkb

+0

Si necesita más información sobre MacPorts, están aquí (http://www.macports.org) y tienen puertos para gcc hasta 4.5. – mkb

+0

ah ahora todo funciona, muchas gracias chicos. –

1

Puede tener varias versiones de GCC en su caja, para seleccionar el que desea utilizar llamarlo con la ruta completa, por ejemplo en lugar de g++ utilice la ruta completa /usr/bin/g++ en la línea de comandos (depende de dónde viva su gcc).

Para compilar proyectos, depende de qué sistema utilices, no estoy seguro acerca de Xcode (estoy contento con la atmósfera predeterminada) pero cuando utilizas Makefiles puedes establecer GXX =/usr/bin/g ++ y así sucesivamente .

EDITAR

Ahora hay un guión xcrun que se puede consultar para seleccionar la versión adecuada de herramientas de construcción en mac. Además de man xcrun he buscado en Google esta explicación sobre xcode and command line tools que resume bastante cómo usarlo.

2

uso "gcc_select -l"

> gcc_select -l

gcc40 mp-gcc44

> gcc_select mp-gcc44

2

en /usr/bin tipo

sudo ln -s -f g++-4.2 g++

sudo ln -s -f gcc-4.2 gcc

Eso debería hacerlo.

-5

Cualquier cosa que Apple envíe como gcc por defecto en xcode (4.2.1 en 10.6, 4.0.1 antes) está bien probado (y mantenido) por los chicos de Apple y el "estándar" para construir software con OS X. Todo de lo contrario, no, así que piénselo dos veces si desea desarrollar un software o ser un probador beta de gcc/OS X.

+5

... un año y medio después, GCC 4.2 sigue siendo el estándar en XCode en el último Mac OS. Triste pero cierto. –

+2

John Zwinck: en realidad,/usr/bin/gcc es llvm-gcc-4.2 y la estrategia general del compilador es claramente llvm/clang. Así que ya no esperaría que pasara mucho en el frente de gcc/OS X. –

+1

Notas de la versión XCode 4.6: "Xcode 4.6 es la última versión que incluye el compilador LLVM-GCC y el depurador GDB". https://developer.apple.com/library/mac/#releasenotes/DeveloperTools/RN-Xcode/ –

13

Acabo de mencionar que usar un enlace suave para lograr esto es una idea terrible, no-buena, horrible.

Una de las cosas clave sobre la escritura de software es la reproducibilidad: desea obtener los mismos resultados siempre. Estos sistemas son tan complejos que desea reducir todas las fuentes invisibles de error.

Tener un enlace suave es una fuente de error invisible.Es el tipo de cosas que olvidará en un mes, luego pasará a una máquina diferente, y se preguntará por qué obtiene diferentes resultados, o bien, intentará actualizar su sistema, y ​​obtendrá errores extraños porque no es esperando un enlace suave allí.

Además, no se garantiza que funcione, en particular, no está claro si obtendrá los archivos de sistema correctos, que ciertamente han cambiado entre las iteraciones de gcc.

gcc_select es una forma sistemática de hacer lo mismo que funcionará de manera predecible, o en el peor de los casos puede presentar un informe de error y obtener una solución definitiva o solucionarlo usted mismo.

desgracia :-(gcc_select no afecta a los que XCode compilador utiliza lo que no es el camino a seguir si necesita trabajar en XCode (que hago). Todavía no sé lo que podría ser de esa manera.

+0

Usted puede establecer qué compilador utiliza XCode, en la configuración del proyecto o del objetivo (me temo que no recuerdo dónde exactamente) es un camino hacia el compilador. Necesitaba cambiarlo para compilar una biblioteca. – 11684

36

Sé que es una solicitud anterior, pero aún podría ser útil para algunos. Con las versiones actuales de MacPorts, puede elegir la versión predeterminada de gcc con el comando de puerto. Para ver una lista de las versiones disponibles de gcc, use:

$ sudo port select --list gcc

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

para configurar gcc para la versión DarwinPorts:

$ sudo port select --set gcc mp-gcc46

+5

Asegúrese de hacer 'sudo port install gcc_select' primero. O bien obtendrás 'Error: el comando 'list' falló: El grupo especificado 'gcc' no existe. – ulidtko

+0

¡muchas gracias por la respuesta ...! estaba rompiendo mi corazón fr esto –

2

La siguiente receta utilizando Homebrew trabajó para mí Para actualizar a gcc/g ++ 4.7:

$ brew tap SynthiNet/synthinet 
$ brew install gcc47 

encontró en un puesto de here.

Cuestiones relacionadas