Ligadores de bibliotecas

Solo disponible en BuenasTareas
  • Páginas : 11 (2565 palabras )
  • Descarga(s) : 0
  • Publicado : 9 de noviembre de 2010
Leer documento completo
Vista previa del texto
4.1.1 Liga de biblioteca de código objeto.

N MO0090IP`’K.

Esta opción deberá seguir los argumentos de los archivos fuente. Las bibliotecas objeto son guardadas y pueden estar estandarizadas, un tercero o usuario las crea.

Probablemente la biblioteca más comúnmente usada es la biblioteca matemática (math.h). Esta biblioteca deberá ligarse explícitamente si se desea usar las funcionesmatemáticas (y por supuesto no olvidar el archivo cabecera #include , en el programa que llama a las funciones)

Por ejemplo:

gcc calc.c -o calc -lm

Muchas otras bibliotecas son ligadas de esta forma.

Uso de las bibliotecas

C es un lenguaje extremadamente pequeño. Muchas de las funciones que tienen otros lenguajes no están en C, por ejemplo, no hay funciones para E/S, manejo de cadenas ofunciones matemática.

La funcionalidad de C se obtiene a través de un rico conjunto de bibliotecas de funciones.

Como resultado, muchas implementaciones de C incluyen bibliotecas estándar de funciones para varias finalidades. Para muchos propósitos básicos estas podrían ser consideradas como parte de C. Pero pueden variar de máquina a máquina.

Un programador puede también desarrollar suspropias funciones de biblioteca e incluso bibliotecas especiales de terceros, por ejemplo, NAG o PHIGS.

Todas las bibliotecas (excepto E/S estándar) requieren ser explícitamente ligadas con la opción -l y, posiblemente con L, como se señalo previamente.

4.1.2 Ligadores Estáticos

Cuando se utilizan subrutinas en un programa, el código ejecutable de cada una de ellas debe encontrarse enmemoria al tiempo de ejecución. Para esto, antes de cargar un programa, debe ligarse su código objeto con los códigos objeto (guardados en uno o más archivos) de cada una de las subrutinas invocadas por él, obteniendo así un programa ejecutable que contiene tanto el código del módulo invocador como el código de los módulos invocados. En este punto, es posible guardar el resultado del proceso de ligaen un archivo que podrá ser utilizado por un cargador, o el mismo programa ligador puede también realizar la tarea de carga. Esto último evita el tener que guardar el código ejecutable en un archivo, con lo que se ahorra espacio en disco. Este ahorro de espacio en disco se paga con el tiempo gastado al tener que ligar todos los módulos cada vez que se necesite ejecutar el programa.

ESTE ENLACESE LLAMA ESTÁTICO porque se realiza antes de ejecutar el programa.

[pic]

Ligador o Montador

El ensamblador depende de otra herramienta, el Montador (Linker), para combinar un conjunto de ficheros objeto y bibliotecas en un fichero ejecutable resolviendo las referencias a etiquetas externas. El ensamblador asiste al Montador proporcionándole la lista de etiquetas y referencias noresueltas.

La compilación separada permite dividir un programa en partes guardadas en ficheros diferentes. Cada fichero contiene una colección relacionada de subrutinas y estructuras de datos que forman un modulo de un programa mayor.

Los ficheros se pueden compilar y ensamblar independientemente de los demás de forma que cambios en un modulo no requiere la recopilación del programa entero.

Lacompilación separada requiere de un paso adicional de montaje (Link) para combinar los ficheros objeto de los módulos separados y resolver las referencias pendientes. La herramienta que combina estos ficheros es el Ligador (Montador).

El Ligador (Montador), Realiza las siguientes tareas:

Busca en la biblioteca de programas para encontrar las rutinas de la biblioteca usadas en el programa.Determina las posiciones de memoria que va a ocupar el código de cada modulo y reubica sus instrucciones ajustando las referencias absolutas.

El montador combina todas las rutinas no locales en un solo fichero educable y resuelve las referencias entre rutinas de ficheros diferentes.

Esquema del Ligador Montador

La primera tarea del Montador es asegurarse que el programa no...
tracking img