next up previous
Next: Imagen de un proceso Up: Ficheros ejecutables Previous: Lanzando ficheros ejecutables

El fichero ejecutable binario

Un ejecutable es un programa que puede ejecutarse por la CPU normalmente para realizar algún trabajo útil. Estos ficheros normalmente se generan con la ayuda de un compilador aunque si se desea también se puede trabajar directamente con el ensamblador. Ya usemos uno u otro, el fichero se enlaza mediante el enlazador (linker) con el resto de librerías del sistema operativo antes de convertirse en un verdadero fichero ejecutable. Estos tienen la siguiente estructura:

1.
Cabecera: contiene los tamaños del resto de áreas del ejecutable.

2.
Código (text): almacena el código máquina del programa. No hay datos pero si referencia a los mismos.

3.
Datos (data): aquí se colocan las variables cuyo valor es conocido por el compilador en tiempo de compilación: constantes, arrays estáticos, etc.

4.
Tabla de símbolos: almacena las referencias a todos los símbolos (los nombres de las variables usadas) que utiliza el programa. Esta información es útil en tiempo de depuración.

5.
Información de reubicación: contiene información sobre dónde ha buscado el montador de referencias (linker) que no encontró el compilador.

Las dos últimas secciones no son imprescindibles para el ejecutable si ya está depurado y pueden eliminarse mediante el comando strip . Para averiguar el tamaño de las áreas de código y datos puede usarse el comando size . Ejemplo:



width 3pt
width .3pt415ptgogh:/bin2/bin>  ls -l zrun
-rwxr-xr-x   1 vruiz    wheel       24137 Feb  2 21:12 zrun*
gogh:/bin2/bin> size zrun
text    data    bss     dec     hex     filename
12256   4096    0       16352   3fe0    zrun
gogh:/bin2/bin> strip zrun
gogh:/bin2/bin> ls -l zrun
-rwxr-xr-x   1 vruiz    wheel       16384 Jul  5 19:30 zrun*
gogh:/bin2/bin> size zrun
text    data    bss     dec     hex     filename
12256   4096    0       16352   3fe0    zrun
gogh:/bin2/bin>
width .3pt
depth .3pt width -3pt

next up previous
Next: Imagen de un proceso Up: Ficheros ejecutables Previous: Lanzando ficheros ejecutables
Vicente González Ruiz
1998-07-13