Gnu C y C ++ compiladores para linux
La herramienta de desarrollo de software más importante en Linux es GCC - GNU C y el compilador C ++. De hecho, GCC puede compilar tres idiomas: C, C ++, y de Objective-C (un lenguaje que añade capacidades de programación orientada a objetos en C).
Se utiliza el mismo gcc comando para compilar y enlazar los dos archivos de código fuente C y C ++. El compilador GCC soporta el estándar ANSI C, por lo que es fácil de portar cualquier programa ANSI C para Linux. Además, si alguna vez has utilizado un compilador de C en otros sistemas Unix, debe sentirse como en casa con GCC.
El uso de GCC
Utilizar el gcc comando para invocar GCC. Por defecto, cuando se utiliza el gcc comando en un archivo de origen, preprocesa CCG, compila y enlaces para crear un archivo ejecutable. Sin embargo, puede utilizar las opciones del CCG para detener este proceso en una fase intermedia.
Por ejemplo, es posible invocar gcc mediante el uso de la -c opción para compilar un archivo de origen y generar un archivo objeto, pero no para realizar la etapa de enlace.
El uso de GCC para compilar y enlazar un par de archivos de código fuente C es fácil. Suponga que quiere compilar y enlazar un programa sencillo compuesto por dos archivos de origen. Para lograr esta tarea, utilice la siguiente fuente de programas de códigos la tarea que se almacena en el archivo area.c calcula el área de un círculo cuyo radio se especifica en la línea de comandos.
La compilación de los programas C ++
GNU CC es un C combinado y compilador de C ++, por lo que el gcc comando también puede compilar archivos de código fuente de C ++. GCC utiliza la extensión de archivo para determinar si un archivo es C o C ++. Archivos de C tienen una minúscula .c extensión, mientras que C ++ archivos terminan con .C o .cpp.
Aunque el gcc comando puede compilar un archivo C ++, esta orden no se vincula automáticamente con varias bibliotecas de clases que los programas C ++ normalmente requieren. Compilar y vincular un programa en C ++ utilizando el comando g ++ es fácil ya que se ejecuta gcc con opciones apropiadas.
Explorar opciones del CCG
Aquí está la sintaxis básica del gcc comando:
Opciones gcc nombres de archivo
Cada opción comienza con un guión (-) y por lo general tiene un nombre largo, como --char funsigned o -finline-funciones. Muchas de las opciones de uso común son cortos, sin embargo, como -c, para compilar solamente, y -g, para generar información de depuración (necesario para depurar el programa utilizando el depurador de GNU, gdb).
Puede ver un resumen de todas las opciones del CCG escribiendo el siguiente comando en una ventana de terminal:
hombre gcc
A continuación, puede navegar a través de las opciones del CCG de uso común. Por lo general, usted no tiene que proporcionar opciones CCG explícitamente porque los ajustes por defecto están muy bien para la mayoría de aplicaciones. Esta tabla muestra algunas de las opciones del CCG que esté utilizando.
Opción | Significado |
---|---|
-ansi | Sólo admite la sintaxis de C ANSI estándar. (Esta opción disablessome características específicas de C de GNU, como the_asm and_tipo depalabras clave.) Cuando se utiliza con g ++, sólo es compatible con la norma ISO-C ++ estándar. |
-c | Compila y genera sólo el archivo objeto. |
-DMACRO | Define la macro con la cadena "1"como su valor. |
-DMACRO = defn | Define la macro como Defn, dóndeDefn alguna cadena de texto. |
-E | Se ejecuta sólo el preprocesador C. |
--barbecho precisión simple | Realiza todas las operaciones matemáticas en precisión simple. |
-FPCC-estructura de retención | Devuelve todos struct y los valores sindicales en la memoria, en lugar de inregisters. (Valores Volviendo de esta manera es menos eficiente, pero al menos es compatible con otros compiladores.) |
-fPIC | Genera código independiente de la posición (PIC) adecuado para su uso en la biblioteca ashared. |
-freg-estructura de retención | Cuando sea posible, los retornos struct yunión valores de registros. |
-g | Genera información de depuración. (El depurador de GNU puede utilizar thisinformation.) |
-Yo DIRECTORIO | Busca en el directorio especificado para los archivos que se incluyen la byusing #include Directiva de preprocesador. |
-L DIRECTORIO | Busca en el directorio especificado para las bibliotecas. |
-l BIBLIOTECA | Busca en la biblioteca especificada al vincular. |
-mcpu = cputype | Optimiza el código para un procesador específico. (cputype puede tomar muchos valores diferentes -algunos de los más comunes son i386, i486, i586, i686, pentium, PentiumPro, Pentium2, pentium3, pentium4.) |
-o ARCHIVO | Genera el archivo de salida especificado (utilizado para designar el nombredel un archivo ejecutable). |
-00 (dos ceros) | No optimizar. |
-O o -O1 (letra O) | Optimiza el código generado. |
-O2 (letra O) | Optimiza aún más. |
-O3 (letra O) | Realiza optimizaciones más allá de los hecho por -O2 |
-Os (letra O) | Optimiza para el tamaño (para reducir la cantidad total de código). |
-pedante | Genera errores si las extensiones no ANSI estándar areused. |
-pg | Añade código adicional al programa de manera que, cuando se ejecuta, este programgenerates información que el gprofEl programa puede usar para mostrar datos detallados para varias partes de theprogram. |
-compartido | Genera un fichero objeto compartido (normalmente utilizado para crear la biblioteca ashared). |
-UMACRO | Undefines las macros especificados. |
-v | Muestra el número de versión de GCC. |
-w | No genera mensajes de advertencia. |
-W1, OPCIÓN | Pasa la OPCIÓN string (que contiene opciones multiplecomma separados) al enlazador. Para crear un librarynamed compartida libXXX.so.1, por ejemplo, usar la bandera thefollowing: -Wl,-soname, libXXX.so.1. |