Articulo de referencia

compilación estática

Una compilación estática es una versión compilada de un programa que se ha enlazado estáticamente con bibliotecas. Enlace En informática , enlazar significa tomar uno o más obje...

Una compilación estática es una versión compilada de un programa que se ha enlazado estáticamente con bibliotecas.

Enlace

En informática , enlazar significa tomar uno o más objetos generados por compiladores y ensamblarlos en un único programa ejecutable . Los objetos son módulos de programa que contienen código máquina y definiciones de símbolos , que se presentan en dos variedades:

  • Los símbolos definidos o exportados son funciones o variables presentes en el módulo representado por el objeto, y que deben estar disponibles para su uso por otros módulos.
  • Los símbolos no definidos o importados son funciones o variables que este objeto llama o a las que hace referencia, pero que no están definidas internamente.

Un programa enlazador resuelve las referencias a símbolos no definidos al determinar qué otro objeto define el símbolo en cuestión y reemplazar los marcadores de posición con la dirección del símbolo. Los enlazadores pueden tomar objetos de una colección llamada biblioteca . El programa final no incluye la biblioteca completa, sino solo los objetos necesarios. Existen bibliotecas para diversos fines, y generalmente se enlazan una o más bibliotecas del sistema por defecto.

Enlace dinámico

Los sistemas operativos modernos permiten el enlace dinámico , es decir, posponer la resolución de algunos símbolos indefinidos hasta que se ejecute el programa. Esto significa que el ejecutable aún contiene símbolos indefinidos, además de una lista de objetos o bibliotecas que proporcionarán definiciones para estos. Al cargar el programa, también se cargarán estos objetos/bibliotecas y se realizará el enlace final.

La vinculación dinámica ofrece tres ventajas:

  • Las bibliotecas de uso frecuente (por ejemplo, la biblioteca estándar del sistema ) deben almacenarse en una sola ubicación, no duplicarse en cada archivo binario.
  • Si se actualiza o reemplaza una biblioteca, todos los programas que la utilizan dinámicamente se beneficiarán inmediatamente de las correcciones. Las compilaciones estáticas tendrían que volver a enlazarse primero.
  • El tamaño del archivo ejecutable binario es menor que el de su equivalente enlazado estáticamente.

Edificio estático

En un programa compilado estáticamente , no se produce ningún enlace dinámico: todos los enlaces se han realizado en tiempo de compilación .

Las compilaciones estáticas tienen un comportamiento muy predecible (ya que no dependen de la versión específica de las bibliotecas disponibles en el sistema final) y se utilizan habitualmente en herramientas forenses y de seguridad para evitar posibles contaminaciones o fallos de funcionamiento debidos a bibliotecas dañadas en la máquina examinada. La misma flexibilidad que permite que una biblioteca actualizada beneficie a todas las aplicaciones con enlace dinámico también puede impedir que las aplicaciones que presuponen la presencia de una versión específica de una biblioteca determinada se ejecuten correctamente. Si cada aplicación de un sistema debe tener su propia copia de una biblioteca dinámica para garantizar su correcto funcionamiento, las ventajas del enlace dinámico resultan irrelevantes.

Otra ventaja de las compilaciones estáticas es su portabilidad: una vez compilado el archivo ejecutable final, ya no es necesario conservar los archivos de biblioteca a los que hace referencia el programa, puesto que todas las partes relevantes se copian en el archivo ejecutable. En consecuencia, al instalar un programa compilado estáticamente en un ordenador, el usuario no tiene que descargar ni instalar bibliotecas adicionales: el programa está listo para ejecutarse.

Véase también

Referencias

  • Levine, John R. (2000) [octubre de 1999]. Enlazadores y cargadores . Serie Morgan Kaufmann de ingeniería de software y programación (1.ª  ed.). San Francisco, EE. UU.: Morgan Kaufmann . ISBN 1-55860-496-0ISBN 978-1-55860-496-4.
  • Keren, Guy (2002). Creación y uso de bibliotecas "C" estáticas y compartidas . Little Unix Programmers Group (LUPG).
Obtenido de " https://en.wikipedia.org/w/index.php?title=Static_build&oldid=1216342346 "