Pregunta

El readme incluido con el nuevo Xcode 3.2.1 esta semana dice lo siguiente:

  • análisis de código estático está totalmente integrado en el IDE de Xcode a través de la opción de construir y analizar bajo el menú Generar o por medio de la configuración de generación personalizada
  • GCC 4.2 es el compilador de sistema por defecto para el 10,6 SDK
  • El compilador LLVM opcional se incluye el uso de dos frentes diferentes termina - el compilador Clang es un programa de análisis de última generación que ofrece una mejora drásticamente los tiempos de compilación. Para la máxima compatibilidad, el compilador GCC LLVM utiliza el back-end LLVM con el analizador GCC 4.2.
  • Nueva opcional Clang-LLVM 1.0 compilador utiliza el analizador mucho más rápido Clang front-end junto con el compilador LLVM back-end para compilaciones rápidas y rápido código ejecutable. Muchos proyectos se beneficiarán de esta combinación compilador, aunque GCC 4.2 sigue siendo el defecto del sistema. El Clang-LLVM 1.0 compilador caerá de nuevo a usar LLVM-GCC 4,2 cuando se encuentra con el código de C ++.

Nuestra empresa tiene proyectos que son puras C, Objective-C y Objective-C ++ para el escritorio y iphone existente. Alguien puede resumir en un alto nivel las diferencias entre LLVM, GCC, CLANG, CLANG-LLVM, WordFoo et. Alabama. y explicar lo que son y cuando deberíamos estar usando todos y para qué? Sería bueno tener enlaces a más de una explicación detallada, pero estoy realmente sólo en busca de una descripción de alto nivel.

¿Fue útil?

Solución

En pocas palabras:

Los compiladores están básicamente divididos en dos partes. Uno de ellos es el front-end que contiene el programa de análisis y análisis semántico del lenguaje de programación. El front-end produce algún tipo de representación intermedia de su código. Luego está el backend que toma la materia produce el front-end, lo optimiza, y, finalmente, genera código ensamblador.

  • GCC : compilador conocido, contiene ambas interfaces para varios idiomas y el back-end para muchos procesador arquitecturas
  • LLVM : un conjunto de back-ends para diversas arquitecturas (y otras cosas de bajo nivel)
  • sonido metálico : un nuevo front-end para C, Objective-C, y C ++; utiliza los llvm back-ends. Usted obtendrá los errores y las advertencias de su compilador más legibles y tiempos de compilación más cortos. También pueden surgir incompatibilidades o errores; sonido metálico es un proyecto muy joven.
  • LLVM-CCG: front-end de GCC con el back-end de LLVM. back-end de LLVM es más rápido que GCC.

(Objetivo-) C ++ apoyo de sonido metálico está lejos de ser completa, de modo que llama llvm-gcc cuando encuentra un archivo fuente en C ++. También contiene el analizador estático que ahora está integrado en Xcode. Algunas personas dicen back-end de LLVM genera un mejor código de GCC, pero su experiencia puede variar. LLVM también es compatible con optimizaciones de tiempo de enlace (que se puede activar en la configuración del proyecto de Xcode). Pueden producir código más rápido.

Apple quiere reemplazar GCC con sonido metálico en el futuro debido a que tienen una política contra la GPLv3 código (GCC 4.2 es la última versión que está disponible bajo GPLv2).

licencia
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top