Compilador GCC y CC

Anonim

GCC vs CC Compiler

CC es el nombre dado al comando del compilador de UNIX. Se utiliza como comando de compilación predeterminado para su sistema operativo y también es ejecutable con el mismo comando. GCC, por otro lado, es el sistema operativo GNU Compiler. En los sistemas que se ejecutan en GNU y Linux, es común encontrar que el CC es un enlace para que los scripts puedan usar cualquiera de los dos compiladores de manera intercambiable y fácil. Existen varias diferencias observadas con respecto al uso de la colección de compiladores de GNU y el compilador de CC. Estas diferencias generalmente se pueden agrupar en dos grupos principales. Uno de estos es más específico, mientras que el otro grupo es más genérico.

Diferencias

La principal diferencia entre los dos se relaciona con los compiladores de C y los compiladores de C ++. Los compiladores de C ++ aceptan programas de C ++ pero no compilan programas en C de forma arbitraria. Esto es generalmente cierto, aunque se ha demostrado que es posible escribir un código de lenguaje C en un subconjunto que C ++ pueda entender bien incluso cuando muchos programas de C no son programas válidos de C ++. Por otro lado, los compiladores de C aceptan los programas de C, pero rechazan la mayoría de los programas de C ++ que se ejecutan en ellos. La razón por la que surge este problema es que la mayoría de los programas de C ++ ejecutan construcciones que no están disponibles en C.

Las bibliotecas disponibles para estos lenguajes de programa dependen en gran medida del idioma. Los programas de C ++ se pueden realizar en las bibliotecas de C, pero esto es específico de la plataforma. Los programas de C por otro lado no pueden usar las bibliotecas de C ++; por lo tanto, C ++ tiende a tener un conjunto de bibliotecas más grande disponible que C.

En Solaris, el código objeto generado por el comando del compilador no es de ninguna manera compatible con el código producido por g ++, ya que estos son dos compiladores separados y sus convenciones serán diferentes. Los principales puntos diferentes son el manejo de excepciones y la manipulación de nombres. Sin embargo, es importante tener en cuenta que la manipulación de nombres es importante para evitar que los objetos compatibles se vinculen entre sí. En efecto, esto apunta al hecho de que el uso de una biblioteca compilada en CC necesita que todo el programa se compile en CC. Además, si necesita usar una biblioteca compilada con CC y otra con g ++, se debe realizar una compilación de las bibliotecas para garantizar la funcionalidad deseada.

En la calidad del ensamblador que se genera, GCC, que es la colección de compiladores de GNU, es extremadamente bueno en esta tarea. Sin embargo, los compiladores nativos funcionan mejor a veces. Se puede decir que los compiladores de Intel tienen optimizaciones exhaustivas que aún no se han replicado en GCC.

Ambos compiladores son todos nuevos en los estándares actuales, aunque existen pequeñas diferencias entre el lenguaje de estándares y el idioma que el compilador admite. Estos estándares son (C ++ 98, C ++ 2003, C99). La compatibilidad con C89 más antigua está disponible en ambos compiladores y un entendimiento de las respuestas esperadas es crucial para asegurar que el compilador se despliegue como se espera. En general, GCC parece estar centrado en hacer la vida más fácil debido a las extensiones y ajustes que se pueden hacer para obtener el resultado deseado.

Resumen

Hay un problema con la compatibilidad cruzada de las bibliotecas de compiladores C y C ++.

Los programas de C ++ pueden ejecutarse en bibliotecas de C, pero esto es específico de la plataforma.

Para utilizar una biblioteca compuesta en CC se requiere que todo el programa se compile con CC y no con GCC. Si tiene una biblioteca compilada en CC y g ++, una de las bibliotecas debe ser recompilada.

GCC hace un trabajo maravilloso en la creación de conjuntos de calidad.

Tanto CC como GCC en características de lenguaje son excelentes en relación con los estándares actuales.