Documente Academic
Documente Profesional
Documente Cultură
m
m
#$
%
#&
m#'m(
m)*
+,-$+. $ /010
h $$23
Se emplea el término librería para referirse a una biblioteca, por la similitud con el original
inglés library. Ambos términos, biblioteca y librería, son correctos según las definiciones
(biblioteca,1 librería2 ) de la RAE, aunque en términos formales, la acepción correcta es
biblioteca, porque es la traducción correcta de library, mientras que el término inglés para
librería es bookstore o book shop (literalmente: tienda de libros), o bien bookshelf
(estantería o mueble para guardar libros, librería o librero). También es habitual referirse a
ella con el término de origen anglosajón toolkit (conjunto, equipo, maletín, caja, estuche,
juego (kit) de herramientas).
#)5)1'/'
)6'1'/'
)'
#))%#%#')')
'9%#
4
Una librería de enlace dinámico, en adelante DLL (Dynamic Link Library), es un archivo
que contiene funciones y/o recursos (mapas de bits, definiciones de fuentes, etc.) que
podrían ser llamados desde cualquier aplicación Windows.
De hecho, se puede considerar que Windows está construído sobre una gran cantidad de
DLL's. La mayoria de librerías de enlace dinámico se guardan en archivos que tienen
extensión DLL, pero también pueden ser guardados en archivos con extensiones EXE
(ejecutable), DRV (controlador de dispositivo) y FON (fuente de Windows).
La diferencia entre las librerías de enlace dinámico con extensión DLL y el resto, es que
las primeras se cargan porque el programa que las ha de utilizar lo pide a Windows y las
demás, en cambio, se cargan porque están referenciadas en archivos de inicialización de
Windows. Estas referencias pueden ser creadas por el propio Windows o por el programa
de instalación de alguna aplicación.
Las bibliotecas dinámicas deben contener código reubicable, ya que la posición de carga
dentro del espacio de direcciones virtuales del proceso no se sabrá hasta el momento de
la carga
Enlace dinámico significa que las subrutinas de una biblioteca son cargadas en un
programa en tiempo de ejecución, en lugar de ser enlazadas en tiempo de compilación, y
se mantienen como archivos independientes separados del fichero ejecutable del
programa principal. El enlazador realiza una mínima cantidad de trabajo en tiempo de
compilación, registra que rutinas de la biblioteca necesita el programa y el índice de
nombres o números de las rutinas en la biblioteca. La mayor parte de la labor de enlazado
se realiza en el momento en que la aplicación se carga (tiempo de carga o loadtime) o
durante la ejecución (tiempo de ejecución o runtime). El necesario código enlazado,
llamado por el cargador, es de hecho parte del sistema operativo subyacente. En el
momento adecuado el cargador localiza las bibliotecas en el disco y añade los datos
relevantes de éstas en el espacio de memoria del proceso.
El enlace dinámico, por su naturaleza, tiene tan sólo las limitaciones establecidas
por las licencias de software.
Los plugins son un uso común de las bibliotecas enlazadas dinámicamente, que
son especialmente útiles cuando unas bibliotecas pueden ser sustituidas por otras con
una interfaz similar, pero diferente funcionalidad. Se puede decir que un software tiene
una "arquitectura de plugin" si utiliza bibliotecas con una funcionalidad básica con la
intención de que puedan ser sustituidas. Sin embargo, el uso de las bibliotecas enlazadas
dinámicamente en la arquitectura de una aplicación no significa necesariamente que
puedan ser sustituidas.
- $ :
- m
Una función definida dentro de una DLL Tienen que estar presentes en la carpeta
está disponible para cualquier aplicación del sistema antes de ser utilizadas
Windows.
Se reduce el tamaño de las aplicaciones El tiempo de acceso a la DLL por parte de
que utilizan la DLL por la reutilización de su la aplicación que la usa es más lento.
código.
Mejora en el tiempo de compilación y/o
carga de la aplicación (debido al menor
tamaño del código)
Ahorro de espacio en disco.
Ejemplo de los pasos para generar una biblioteca dinámica que incluya los objetos de
los ficheros 1' y /', y utilización de la biblioteca en el programa %#' para
enlace dinámico en tiempo de carga.
#)5);
m)1'/'
();
m indica al compilador que debe generar código independiente de la posición,
necesario para que pueda ser compartido en ejecución por más de una aplicación)
#)< )5,),''1)''1'0='
(La opción -shared produce un objeto compartido que puede ser enlazado)
(La opción -Wl pasa opciones al enlazador. En este caso le dice que se refiera
internamente a la biblioteca como libctest.so.1)
);''1'0'
);''1'0''1
7'Compilar la aplicación y enlazarla con la biblioteca dinámica
#)%#%#')')
%#
>' Para poder hallar las bibliotecas dinámicas en ejecución hay que indicarle al sistema en
qué directorio están almacenadas. Para esto se usa la variable LD_LIBRARY_PATH
?%@m
A@
BC'D@m
A@
B
%#
'9%#
Funciones que contiene la DLL: Son las funciones que contiene la DLL y que
fueron declaradas por el programador de la misma.