c++ - meaning - clang windows
LLVM vs clang en OS X (3)
Hay 2 cosas diferentes aquí.
LLVM es un compilador de back-end diseñado para compilar compiladores. Se trata de optimizaciones y producción de código adaptado a la arquitectura de destino.
CLang es una interfaz que analiza el código C, C ++ y Objective C y lo traduce en una representación adecuada para LLVM.
llvm gcc era una versión inicial de un compilador C ++ basado en llvm basado en gcc 4.2, que ahora está en desuso, ya que CLang puede analizar todo lo que pudo analizar, y más.
Finalmente, la principal diferencia entre CLang y gcc no radica en el código producido sino en el enfoque. Mientras que gcc es monolítico, CLang se ha creado como un conjunto de bibliotecas. Este diseño modular permite grandes oportunidades de reutilización para IDE o herramientas de finalización, por ejemplo.
Por el momento, el código producido por gcc 4.6 es generalmente un poco más rápido, pero CLang está cerrando la brecha.
Tengo una pregunta sobre llvm, clang y gcc en OS X.
¿Cuál es la diferencia entre llvm-gcc 4.2, llvm 2.0 y clang? Sé que todos se basan en llvm, pero ¿cómo son diferentes?
Además de una compilación más rápida, ¿cuál es la ventaja de llvm sobre gcc?
LLVM originalmente significaba "máquina virtual de bajo nivel", aunque ahora solo se destaca a sí misma ya que se ha convertido en algo más que una máquina virtual tradicional. Es un conjunto de bibliotecas y herramientas, así como una representación intermedia estandarizada, que se puede utilizar para ayudar a compilar compiladores y compiladores just-in-time. No puede compilar nada más que su propia representación intermedia por sí mismo; necesita un frontend específico del idioma para poder hacerlo. Si las personas simplemente se refieren a LLVM, probablemente solo se refieran a la biblioteca y las herramientas de bajo nivel. Algunas personas pueden referirse a Clang o llvm-gcc incorrectamente como "LLVM", lo que puede causar cierta confusión.
llvm-gcc es una versión modificada de GCC, que utiliza LLVM como back-end en lugar de GCC. Ahora está en desuso, a favor de DragonEgg, que usa el nuevo sistema de complementos de GCC para hacer lo mismo sin bifurcar GCC.
Clang es un nuevo compilador C / C ++ / Objective-C, que utiliza su propio frontend y LLVM como back-end. Las ventajas que proporciona son mejores mensajes de error, tiempo de compilación más rápido y una forma más fácil para que otras herramientas se unan al proceso de compilación (como el depurador LLDB y el analizador estático Clang ). También es razonablemente modular, por lo que puede usarse como una biblioteca para otro software que necesite analizar el código C, C ++ o Objective-C.
Cada uno de estos enfoques (GCC simple, GCC + LLVM y Clang) tienen sus ventajas y desventajas. Los últimos conjuntos de puntos de referencia que he visto mostraron a GCC producir código ligeramente más rápido en la mayoría de los casos de prueba (aunque LLVM tuvo una ligera ventaja en unos pocos), mientras que LLVM y Clang dieron tiempos de compilación significativamente mejores. Los combos GCC y GCC / LLVM tienen la ventaja de que se ha probado mucho más código y funciona en el sabor GCC de C; hay algunas extensiones específicas del compilador que solo GCC tiene, y algunos lugares donde el estándar permite que la implementación varíe, pero el código depende de una implementación en particular. Es mucho más probable si obtienes una gran cantidad de código C heredado que funcionará en GCC que lo que funcionará en Clang, aunque esto está mejorando con el tiempo.
llvm-gcc-4.2 usa el front-end de GCC para analizar su código, luego genera la salida compilada usando LLVM.
El "compilador llvm 2.0" utiliza el front-end clang para analizar su código y genera el resultado compilado utilizando LLVM. "clang" es en realidad el nombre de este front-end, pero a menudo se utiliza casualmente como un nombre para el compilador como un todo.