Anda di halaman 1dari 3

El GNU cc (conocido como gcc) es el conjunto de programas que comprenden el compilador de este proyecto.

Compila programas escritos en lenguaje C, C++, o C dirigido a objetos. Cabe mencionar que tambin compila FORTRAN (claro, con apoyo de g77).

Qu es gcc?

Cmo invocamos a gcc?


Para invocar a gcc, slo tenemos que hacer desde la lnea de comandos lo siguiente:

$> gcc nombre_de_cdigo


Entonces, si gcc no detecta problemas en nuestro cdigo, har: preprocesado, compilacin, ensamblaje, y vinculacin creando un archivo binario llamado a.out Pero yo recomiendo que la manera ms usual de invocar a gcc es la que nos permite nombrar a nuestro binario con el nombre que nosotros queramos. Ejemplo:

$> gcc nombre_de_cdigo -o nombre_de_binario_que_tu_quieras

Ejemplo
Los sistemas LINUX/UNIX son entornos de programacin muy amigables, no es posible describir con exactitud porque, tal vez se deba al hecho de que estos sistemas estn construidos con el lenguaje C (C fue diseado para el sistema operativo UNIX). Bien, para escribir cdigo C, basta con tomar nuestro editor de textos, crear el archivo y guardarlo con extensin c
# include<stdio.h> main() { int entero1, entero2, operacion; printf("primer numero\n"); scanf("%d", &entero1); printf("segundo numero\n"); scanf("%d", &entero2); operacion=entero1 + entero2; printf("la suma es %d\n", operacion); operacion=entero1 - entero2; printf("la resta es %d\n", operacion); operacion=entero1 / entero2; printf("la divisin es %d\n", operacion); operacion=entero1 * entero2; printf("la multiplicacin operacion); return 0; } es %d\n",

Guardamos este cdigo con el nombre operando.c y compilamos: $>gcc operando.c -o operando Para Correr (o ejecutar) el programa, basta con hacer: $> ./mensaje

Cmo controlo a gcc, es decir, de que opciones y argumentos dispongo?


Como se observa este documento no pretende, en absoluto, ser un manual de gcc, al menos no en toda la extensin de la palabra, por ello, slo se presentan las opciones de lnea de comando ms comunes que acepta gcc.
Opcin -o nombre de archivo -c -Dmacro=bar -Iruta_a_directorio -llibrera -Lruta_a_directorio -static -g -ggdb -E -x -O -On -ansi -pedantic -pedantic-errors -traditional -W -Wall -werror -v Propsito Para dar nombre al archivo de salida, si no se especifica el nombre de este archivo, gcc lo llama a.out Compilar sin linkear Define un macro de preprocesador macro con un valor bar en la lnea de comandos Esta opcin pone la ruta de acceso al directorio ruta_a_directorio al comienzo de la lista de directorios en los que gcc busca archivos a incluir por la presencia de directivas #include Linkea la biblioteca librera. El Linker busca una lista estndar de directorios para la biblioteca , la cul es actualmente llamada liblibrera.a Agrega el directorio ruta_a_directorio a la lista de directorios en que gcc busca los archivos de biblioteca Linkea bibliotecas estticas Incluye en el archivo binario informaci estndar de depuracin. Para incluir mucha informacin para depuracin en el binario, informacin slo interpretable por el depurador gdb de GNU Mediante esta opcin le decimos a gcc que detenga el proceso de compilacin luego del preprocesado Para inidicar a gcc que comience la compilacin a cierta altura, muchas veces a partir del cdigo fuente preprocesado; mediante cpp-output Para optimizar el cdigo compilado Especifica un nivel de optimizacin, 0<=n<=3 Para que el modo de el compilador sea el ANSI/ISO C, esto para no permitir extensiones GNU que generen conflictos con estos estndares Lo que hace es mostrar las advertencias necesarias para el ANSI/ISO C Para mostrar todos los errores que requiere el ANSI/ISO C estndar Para el C tradicional, el de Kernigham y Ritchie Con esta opcin lo que se consigue es suprimir todos los mensajes de advertencia Es para mostrar todas las advertencias aplicables que da gcc Las advertencias las convierte en errores, deteniendo as el proceso de compilacin Con esta opcin se muestran todos los comandos utilizados en cada etapa del proceso de compilacin

Un breve comentario sobre algunas de las opciones de gcc. Si se dispone de archivos de biblioteca o de inclusin situados en ubicaciones no estndar, las opciones -lbiblioteca, -Lruta_a_directorio y -Iruta_a_directorio lo que hacen en si es permitirnos especificar tales ubicaciones, para que el compilador las busque, por ejemplo, supngase que hicimos un programa que utiliza las ncurses, digamos curses1.c, entonces, esto se compilara de la siguiente manera: Ikki:/home/javv>gcc curses1.c -o curses1 -lcurses O que tal un programa que utilice las Xlib, llamado X1.c, lo compilaramos as: Ikki:/home/javv>gcc X1.c -o X1 -lX11 -L/usr/X11R6/include O ms an, que nuestros archivos de inclusin habituales los almacenamos en /usr/home/javv/mis_include, entonces gcc las encontrar mediante: Ikki:/home/javv>gcc miarchivo.c -o miarchivo -I/usr/home/javv/mis_include En fin, as se podran hacer ms y ms cosas.

Cambiando un poco de tema, surge una pregunta: Cmo es que gcc procesa los archivos?, bien, lo que hace gcc es basarse en las extensiones de estos; la siguiente tabla muestra las extensiones ms comunes:
Extensin .c .C, .cc .i .ii .S, .s .o .a, .so Tipo de archivo Cdigo fuente de lenguaje C Cdigo fuente de lenguaje C++ Cdigo fuente de C preprocesado Cdigo fuente de C++ preprocesado Cdigo fuente de lenguaje ensamblador Cdigo objeto compilado Cdigo de biblioteca compilado

A manera de apndice
La compilacin de un programa consiste en varias etapas, y que por lo general nosotros no observamos, pues gcc las lleva a cabo de manera encubierta, por decirlo de algn modo, as que veamos el proceso de compilacin paso a paso, para ello nos auxiliaremos con el cdigo de mensaje.c; bsicamente lo que hace gcc es correr mensaje.c sobre el preprocesador , cpp, para expandir cualquier macro que pudiese haber e insertar tambin los contenidos de los archivos que incluimos mediante #include; la segunda etapa es compilar el cdigo fuente prepocesado, para convertirlo en cdigo objeto; por ltimo y con ayuda de ld, llamado linker, crea el binario llamado mensaje. Hagamos todo esto manualmente: 1.- para preprocesar mensaje.c: Ikki:/home/javv>gcc -E mensaje.c -o mensaje.cpp 2.- Hagamos la conversin de mensaje.cpp en cdigo objeto. Ikki:/home/javv>gcc -x cpp-output -c mensaje.cpp -o mensaje.o 3.- Ahora creemos el binario Ikki:/home/javv>gcc mensaje.o -o mensaje Lo anterior tiene utilidad si por ejemplo se presentan problemas entre algunos de los archivos incluidos mediante #include y nuestro cdigo fuente, as mediante la compilacin paso a paso es ms fcil detectar que archivos son lo que producen conflicto. Para ilustrarlo, basta con que tomemos un editor de texto, y veamos el contenido del archivo mensaje.cpp.

Despedida
Bueno, ojal este pequeo manual introductorio para el uso de gcc sea de utilidad :) cualquier error que encuentren, mil disculpas y espero me lo hagan saber.. ah! me parece que hay una versin de gcc para MS- DOS.

Anda mungkin juga menyukai