2011-10-02 17 views
8

¿Cuál es la diferencia entre Apple gcc y GNU gcc? ¿Es Apple gcc un superconjunto del estándar?Actualizando Apple g ++/gcc

g ++ La información de la versión en mi OSX muestra:

$ g++ --version 
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00) 

Algunas de las últimas características de C++ 11 se encuentran en gcc 4.3/4.4 según this. ¿Hay alguna versión más nueva de Apple gcc que pueda actualizar? si es así, ¿cómo puedo hacerlo? Tengo Xcode 4.1

Respuesta

6

Bueno, para la primera parte, Apple en este caso está utilizando el backend LLVM para g ++ como el g ++ predeterminado. Apple también instala los front-ends maravillosamente nombrados clang y clang ++ para LLVM. Sin embargo, no hay absolutamente nada que te impida instalar nuevas sucursales de GCC; MacPorts tiene paquetes para todo hasta 4.6. Si busca "APPLE SOLAMENTE" en la página del manual de gcc, puede ver lo que no estará disponible fuera de las sucursales de Apple.

6

Además de los ya mencionados llvm-gcc y clang, también hay un gcc-4.2 suministrado por Apple (sin backend LLVM) en /usr/bin/gcc-4.2 en Xcode 4.1. Pero no sobrescriba las versiones suministradas por Apple en /usr/bin. Los tres admiten un superconjunto de características que incluyen soporte multi-arch y soporte multi-abi que no se encuentra en las distribuciones vanin GNU y muchos paquetes de terceros dependen de estas características en OS X. Si instala algo a través de MacPorts o desde el origen, lo hará instalarse en una ruta diferente, como /opt/local/bin o /usr/local/bin. Use PATH o variables de entorno para administrar qué compilador usa.

2

Puede usar macport para instalar versiones más recientes. Puede descargarlo here. Una vez que haya instalado gcc con MacPort, se puede usar con Xcode mediante la adición de un entorno definido por el usuario para su construcción:

- Go to the build setting of your project 
- Click on the add build setting button 
- Choose user-defined setting 
- Name it CC 
- In the value field, put the path of the gcc version installed by macport. 
1

Una cosa que sin duda está presente en la rama de Apple GCC pero no en GNU GCC es blocks .

Cuestiones relacionadas