2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
El vinculador juega un papel vital en el desarrollo de programas. Es responsable de integrar múltiples archivos objeto y archivos de biblioteca en un archivo ejecutable. Antes de profundizar en cómo funciona el vinculador, la diferencia entre vínculos estáticos y dinámicos, y cómo crear y usar bibliotecas de vínculos dinámicos, primero describamos las funciones básicas del vinculador.
Enlazador Es una herramienta responsable de combinar uno o más archivos objeto y archivos de biblioteca en un archivo ejecutable. Sus principales funciones incluyen:
Análisis de símbolos : Identifique y procese todos los símbolos (nombres de funciones y variables) en el programa, asegurando que cada símbolo tenga una definición única. Para los símbolos a los que se hace referencia pero no están definidos (símbolos externos), el vinculador busca una definición en una biblioteca proporcionada u otro archivo objeto.
reiniciar : Ajuste el código y las direcciones de datos en cada módulo a la dirección de memoria final. La reubicación incluye la corrección de la dirección en el código y el ajuste de la posición del segmento de datos para garantizar que todas las referencias apunten a la ubicación de memoria correcta.
fusionar segmentos: Fusiona segmentos del mismo tipo (como segmentos de código, segmentos de datos, etc.) de diferentes archivos de destino en un segmento continuo.
biblioteca de procesamiento : Vincula el código de la biblioteca requerido por el programa con el archivo objeto. El vinculador puede manejar dos tipos de bibliotecas: bibliotecas estáticas y bibliotecas dinámicas.
Generar archivo ejecutable: El resultado final es un archivo ejecutable que se puede ejecutar en el sistema operativo.
Enlace estático yEnlace dinámico Son dos modos de trabajo del enlazador, cada uno con diferentes características y escenarios de uso.
concepto : En los enlaces estáticos, el código de la biblioteca se copia en el momento de la compilación y se incrusta en cada ejecutable que lo utiliza. De esta manera, el archivo ejecutable generado contiene todo el código requerido y no depende de archivos de biblioteca externos.
ventaja:
defecto:
Extensión de biblioteca estática:
.lib
.a
concepto : En los enlaces dinámicos, el código de la biblioteca se carga en tiempo de ejecución y no está incrustado en el archivo ejecutable. El ejecutable contiene solo referencias a bibliotecas y el sistema operativo carga el código de la biblioteca en tiempo de ejecución.
ventaja:
defecto:
Extensión de biblioteca dinámica:
.dll
(Biblioteca de vínculos dinámicos).so
(Objeto compartido)En diferentes sistemas operativos, los métodos para crear bibliotecas de vínculos dinámicos son ligeramente diferentes. A continuación se muestran algunos pasos y comandos comunes:
Escribir código de biblioteca:
Cree un archivo fuente C que contenga las funciones que queremos colocar en la biblioteca dinámica.
// example.cpp
#include