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.

Opciones del CCG comunes
OpciónSignificado
-ansiSó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.
-cCompila y genera sólo el archivo objeto.
-DMACRODefine la macro con la cadena "1"como su valor.
-DMACRO = defnDefine la macro como Defn, dóndeDefn alguna cadena de texto.
-ESe ejecuta sólo el preprocesador C.
--barbecho precisión simpleRealiza todas las operaciones matemáticas en precisión simple.
-FPCC-estructura de retenciónDevuelve 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.)
-fPICGenera código independiente de la posición (PIC) adecuado para su uso en la biblioteca ashared.
-freg-estructura de retenciónCuando sea posible, los retornos struct yunión valores de registros.
-gGenera información de depuración. (El depurador de GNU puede utilizar thisinformation.)
-Yo DIRECTORIOBusca en el directorio especificado para los archivos que se incluyen la byusing #include Directiva de preprocesador.
-L DIRECTORIOBusca en el directorio especificado para las bibliotecas.
-l BIBLIOTECABusca en la biblioteca especificada al vincular.
-mcpu = cputypeOptimiza 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 ARCHIVOGenera 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).
-pedanteGenera errores si las extensiones no ANSI estándar areused.
-pgAñ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.
-compartidoGenera un fichero objeto compartido (normalmente utilizado para crear la biblioteca ashared).
-UMACROUndefines las macros especificados.
-vMuestra el número de versión de GCC.
-wNo genera mensajes de advertencia.
-W1, OPCIÓNPasa 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.



» » » » Gnu C y C ++ compiladores para linux