image1.jpg

Compiladores GNU C y C ++ para Linux

La herramienta de desarrollo de software más importante en Linux es GCC, el compilador GNU C y C ++. De hecho, GCC puede compilar tres lenguajes: C, C ++ y Objective-C (un lenguaje que agrega capacidades de programación orientada a objetos a C).

Utiliza el mismo comando gcc para compilar y vincular los archivos fuente C y C ++. El compilador GCC admite el estándar ANSI C, lo que facilita la migración de cualquier programa ANSI C a Linux. Además, si alguna vez ha utilizado un compilador de C en otros sistemas Unix, debería sentirse como en casa con GCC.

Usando GCC

Utilice el comando gcc para invocar GCC. De forma predeterminada, cuando usa el comando gcc en un archivo fuente, GCC preprocesa, compila y vincula para crear un archivo ejecutable. Sin embargo, puede utilizar las opciones de GCC para detener este proceso en una etapa intermedia.

Por ejemplo, puede invocar gcc utilizando la opción -c para compilar un archivo fuente y generar un archivo objeto, pero no para realizar el paso de enlace.

Usar GCC para compilar y vincular algunos archivos fuente de C es fácil. Suponga que desea compilar y vincular un programa simple compuesto por dos archivos fuente. Para realizar esta tarea, utilice el siguiente código fuente del programa; 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 comando.

Compilar programas C ++

GNU CC es un compilador combinado de C y C ++, por lo que el comando gcc también puede compilar archivos fuente C ++. GCC usa la extensión de archivo para determinar si un archivo es C o C ++. Los archivos C tienen una extensión .c en minúsculas , mientras que los archivos C ++ terminan con .C o .cpp .

Aunque el comando gcc puede compilar un archivo C ++, ese comando no se vincula automáticamente con varias bibliotecas de clases que los programas C ++ suelen requerir. Compilar y vincular un programa C ++ usando el comando g ++ es fácil porque ejecuta gcc con las opciones adecuadas.

LEER  Cómo cambiar la barra de tareas de Windows

Explorando las opciones de GCC

Aquí está la sintaxis básica del comando gcc :

nombres de archivo de opciones gcc

Cada opción comienza con un guión (-) y normalmente tiene un nombre largo, como -funsigned-char o -finline-functions . Sin embargo, muchas de las opciones de uso común son breves, como -c, para compilar únicamente, y -g, para generar información de depuración (necesaria para depurar el programa mediante el depurador GNU, gdb ).

Puede ver un resumen de todas las opciones de GCC escribiendo el siguiente comando en una ventana de terminal:

hombre gcc

Luego, puede navegar a través de las opciones de GCC de uso común. Por lo general, no es necesario que proporcione las opciones de GCC explícitamente porque la configuración predeterminada está bien para la mayoría de las aplicaciones. Esta tabla enumera algunas de las opciones de GCC que puede usar.


Opciones comunes de GCC

Opción Sentido
-ansi Solo admite la sintaxis C estándar de ANSI. (Esta opción deshabilita

algunas características específicas de GNU C, como las

palabras
clave_
asm y_ typeof
). Cuando se usa con g ++, solo admite C ++ estándar ISO.
-C Compila y genera solo el archivo de objeto.
-DMACRO Define la macro con la cadena “1”

como valor.
-DMACRO = DEFN Define la macro como DEFN , donde
DEFN es una cadena de texto.
-MI Ejecuta solo el preprocesador C.
-fallow-single-precisión Realiza todas las operaciones matemáticas con precisión simple.
-fpcc-estructura-retorno Devuelve todos los valores de estructura y unión en memoria, en lugar de en

registros.
(Devolver valores 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 una

biblioteca compartida.
-freg-estructura-retorno Cuando es posible, devuelve registros de valores de estructura y
unión .
-gramo Genera información de depuración. (El depurador GNU puede usar esta

información).
-I DIRECTORIO Busca en el directorio especificado los archivos que incluya

mediante la

directiva
#include preprocessor
.
-L DIRECTORIO Busca bibliotecas en el directorio especificado.
-l BIBLIOTECA Busca la biblioteca especificada al vincular.
-mcpu = cputype Optimiza el código para un procesador específico. ( cputype puede tomar muchos valores diferentes;

algunos comunes son
i386, i486, i586, i686,

pentium, pentiumpro, pentium2, pentium3, pentium4
) .
-o ARCHIVO Genera el archivo de salida especificado (utilizado para designar el nombre

de un archivo ejecutable).
-00 (dos ceros) No optimiza.
-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 las realizadas para -O2
-Os (letra O) Optimiza el tamaño (para reducir la cantidad total de código).
-pedante Genera errores si se

utilizan
extensiones no estándar ANSI .
-pg Agrega código adicional al programa para que, cuando se ejecute, este programa

genere información que el

programa
gprof
puede usar para mostrar detalles de tiempo para varias partes del

programa.
-compartido Genera un archivo de objeto compartido (normalmente se usa para crear una

biblioteca compartida).
-UMACRO Anula la definición de las macros especificadas.
-v Muestra el número de versión de GCC.
-w No genera mensajes de advertencia.
-W1, OPCIÓN Pasa la cadena OPTION (que contiene varias

opciones separadas por comas) al vinculador.
Para crear una biblioteca compartida


llamada
libXXX.so.1 , por ejemplo, utilice la

siguiente
marca : -Wl , -soname, libXXX.so.1 .

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *