Introducción a las bibliotecas en Windows y Linux

  

Qué son las bibliotecas Las bibliotecas son colecciones de funciones precompiladas que se escriben de acuerdo con los principios de reutilización. Por lo general, se componen de un conjunto de funciones interrelacionadas que realizan un trabajo común. En esencia, una biblioteca es una forma binaria de código ejecutable que el sistema operativo puede cargar en la memoria. Hay una gran cantidad de bibliotecas tanto en la plataforma Windows como en la plataforma Linux, pero debido a la naturaleza de Windows y Linux, el binario de las bibliotecas es incompatible. Clasificación de bibliotecas Existen dos tipos de bibliotecas en Windows: bibliotecas estáticas (.lib) y bibliotecas de enlaces dinámicos (.dll). Hay dos tipos de bibliotecas en Linux: bibliotecas estáticas (.a) y bibliotecas compartidas (.so). El nombre de la biblioteca estática en Linux es generalmente libxxxx.a, donde xxxx es el nombre de la biblioteca, el nombre de la biblioteca dinámica en Linux es generalmente libxxxx.so.major.minor, xxxx es el nombre de la biblioteca y mayor es el número de versión principal. Menor es el número de versión menor. Las similitudes y diferencias entre las bibliotecas bajo Windows y las bibliotecas bajo Linux Las bibliotecas compartidas de Linux (.so) son como las bibliotecas de enlace dinámico de Windows (.dll), que contienen muchas funciones comúnmente utilizadas por los programas. Para facilitar el desarrollo del programa y reducir la redundancia del programa, el programa no necesita incluir una copia de cada función comúnmente utilizada, simplemente llame a la función constante en la biblioteca compartida cuando sea necesario. De esta manera lo llamamos Dinámicamente Vinculado. Y a veces no queremos llamar al programa para llamar a la función de la biblioteca compartida, sino para vincular el código de la función de la biblioteca directamente al código del programa, es decir, el programa en sí mismo tiene una copia de la función en la biblioteca compartida. De esta manera lo llamamos Static Linked. Entonces, la diferencia simple entre las bibliotecas estáticas y las bibliotecas compartidas (bibliotecas dinámicas) es que el código se carga en diferentes momentos. El código de la biblioteca estática se ha cargado en el ejecutable durante el proceso de compilación, por lo que es voluminoso. El código de la biblioteca compartida se carga en la memoria cuando el ejecutable se está ejecutando. Es solo una simple referencia durante la compilación, por lo que el código es pequeño. La diferencia entre la biblioteca de enlace dinámico (.dll) en Windows y la biblioteca compartida (.so) en Linux. El archivo DLL es en realidad y. Al igual que el archivo exe, pertenece al archivo ejecutable en formato PE. Para la referencia implícita a símbolos externos, la ubicación del símbolo externo debe escribirse en el encabezado PE. El cargador de PE encontrará la tabla de símbolos dependientes del encabezado de PE y cargará el resto de las dependencias. Archivo dll. ¡Este no es el caso en Linux! . Los archivos así son en su mayoría elf archivos de archivos ejecutables. Cuando necesitan símbolos externos, no puede especificar dónde se ubican estos símbolos. Es decir, por lo general. El propio archivo no sabe de qué símbolos depende. Así que por dentro. Estos símbolos son proporcionados por el proceso que llama a dlopen cuando se ejecuta. Hacemos uno bajo Windows. También debe llevar uno cuando tenga un archivo dll. Archivo lib; en Linux, generalmente solo es necesario tener el archivo de encabezado correspondiente es suficiente. Para escribir nuevos. Por lo tanto, el símbolo que no se puede encontrar se puede dejar allí hasta que el archivo finalmente se ejecute para unir todos los símbolos requeridos. Windows puede existir una. Dl a otro. La dependencia implícita de dll, generalmente no necesita ser permitida bajo Linux. Así y. Así tiene las dependencias implícitas.

Copyright © Conocimiento de Windows All Rights Reserved