tuxtor, escribio:
- Code: Select all
Pues para java no te servira gcc
Lamentablemente estoy en desacuerdo contigo.
GCC es parte del proyecto GNU, el cual trabaja con los siguientes lenguajes:
* Java (GCJ)
* C++ (G++)
* C (GCC)
* Objective C
* Ada (GNAT)
* Fortran (GFortran)
Sebago ademas de darte la bienvenida formal al foro, te detallo un pequeño manual para que te entrenes en GCC:
Pequeño manual del compilador GCCGCC (GNU Compiler Collection) es un compilador integrado a GNU para programas hechos en C, C++, Fortran, etc. El cual recibe desde la lÃnea de comandos el código fuente como parámetro de cualquier lenguaje soportado de pendiendo la versión del compilador gcc, el cual genera un binario en lenguaje de la máquina el ejecutable.
Sintaxis:
gcc [ opciones | archivofuente ]
g++ [ opciones | archivofuente ]
Para ver todas las opciones del compilador hay que mandarle como paramento:
- Code: Select all
$ gcc --help
Compilación.
Cuando solo se especifica únicamente el código fuente genera un archivo compilado de salida de nombre a.out:
- Code: Select all
$ gcc code.c
-o nombre esta opción especÃfica el nombre del archivo ejecutable:
- Code: Select all
$ gcc -o bincode code.c
-c Genera el código objeto con el mismo nombre del código fuente, pero con extensión .o:
- Code: Select all
$ gcc -c code.c
Para especificar el nombre el nombre del código objeto seria de esta manera:
- Code: Select all
$ gcc -c -o objeto.o code.c
-Lruta Con este parámetro se especifican la ruta donde se buscan las librerÃas o bibliotecas a utilizar por el código fuente:
- Code: Select all
$ gcc -L/lib -L/usr/lib code.cpp
-Irura Esta opción indica la carpeta para buscar archivos de encabezado con estación .h:
- Code: Select all
$ gcc -I/usr/include code.cpp
- E realiza solamente el preprocesamiento y envÃa el resultado a la salida estándar.
-Wall muestra todos los mensajes de error y advertencia del compilador
-g incluye en el ejecutable generado la información necesaria para poder usar un depurador como GDB.
-v muestra los comandos ejecutados en cada etapa de compilación asà como la versión del compilador.
Ejemplo de un código en c:
/* code.c */
#define valor 123
main()
{
printf("Hola colaboradores de mygnet.\n");
}
Preprocesamiento se pude realizar de la siguiente manera:
- Code: Select all
$ gcc -E code.c > code.pp
[code]$ cpp code.c > code.pp [/code]
La compilación transforma el código C en el lenguaje ensamblador.
- Code: Select all
$ gcc -S code.c
[code]$ more code.s[/code]
// es el lenguaje ensamblador.
El ensamblado transforma el programa escrito en lenguaje ensamblador a código objeto.
- Code: Select all
$ as -o code.o circulo.s
//Código ensamblador a un código objeto
- Code: Select all
$ gcc -c code.c //Codigo fuente a un codigo objecto
Enlazado consiste en reunir las uno o más módulos en código objeto con el código existente en las bibliotecas.
Por ejemplo las funciones perintf, getch, strcopy, etc. Todas las que utiliza el código fuente las enlaza ya se de forma dinámica o estática.
- Code: Select all
$ gcc -o bincode code.o
//crea un ejecutable bincode
Ejecutarlo:
- Code: Select all
$ ./code
La opción -v de gcc obtendrá un informe detallado de todos los pasos de compilación:
- Code: Select all
$ gcc -v -o code code.c
Los enlaces pueden ser de dos formas dinámicos y estáticos:
Estático: los binarios de las funciones se incorporan al código binario de nuestro ejecutable.
Dinámico: el código de las funciones permanece en la biblioteca; nuestro ejecutable cargará en memoria la biblioteca y ejecutará la parte de código correspondiente en el momento de correr el programa.
Un enlazado estático:
- Code: Select all
$ gcc -static -o code code.c
Si no se especifica el -static el enlazador es dinámico por defecto.
Un enlace estático es mucho más grande en tamaño que un enlace dinámico
Para saber las dependencias de un archivo binario se puede hacer con el comando ldd:
- Code: Select all
$ gcc -o code code.c
$ ldd code
libc.so.6 => /lib/libc.so.6 (0x40017000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
$ gcc -static -o code code.c
$ ldd code
statically linked (ELF)
La compilación estática no tiene ninguna dependencia.
___________________________________________________________________________________
Pero al final para cualquier programa que este en tu gentoo simplemente con el codigo:
- Code: Select all
$man nombre del programa
Podras tener un maual, en ingles pero es mejor que nada...
- Code: Select all
$ man gcc //para obtener mayo información sobre gcc
Saludos cordiales
