Bibliotecas dinámicas y estáticas en sistema operativo Linux (sin terminar)

1. Biblioteca estática y biblioteca dinámica.

  • Biblioteca estática (.a): el programa vincula el código de la biblioteca al archivo ejecutable al compilar y vincular. Las bibliotecas estáticas ya no serán necesarias cuando el programa se esté ejecutando.
  • Biblioteca dinámica (.so): el código de la biblioteca dinámica está vinculado cuando el programa se está ejecutando y varios programas comparten el código de la biblioteca. Un archivo ejecutable vinculado con una biblioteca dinámica solo contiene una tabla de las direcciones de entrada de las funciones que utiliza, en lugar del código de máquina completo del archivo de destino donde se encuentra la función externa.
  • Antes de que el archivo ejecutable comience a ejecutarse, el sistema operativo copia el código de máquina de la función externa de la biblioteca dinámica en el disco a la memoria, proceso que se denomina enlace dinámico.
  • Las bibliotecas dinámicas se pueden compartir entre varios programas, por lo que los enlaces dinámicos hacen que el archivo ejecutable sea más pequeño y ahorra espacio en disco. El sistema operativo utiliza un mecanismo de memoria virtual para permitir que todos los procesos que utilizan la biblioteca compartan una biblioteca dinámica en la memoria física, ahorrando memoria y espacio en disco.

2. Biblioteca estática

Generar biblioteca estática

ar -rc libxxx.a add.o sub.o

Ver el listado del directorio en la biblioteca estática

ar -tv libxxx.a
t:列出静态库中的文件
v:verbose 详细信息

 

Vincular biblioteca estática

-L especifica la ruta de la biblioteca -l especifica el nombre de la biblioteca. Después de generar el archivo de destino de prueba, la biblioteca estática se elimina y el programa aún puede ejecutarse.

ruta de búsqueda de la biblioteca

  • Busque los directorios especificados por -L de izquierda a derecha.
  • Directorio especificado por variable de entorno
  • (LIBRARY_PATH) Directorio especificado por el sistema

  • /usr/lib

  • /usr/local/lib

3. Biblioteca dinámica

Generar biblioteca dinámica

  • compartido: indica generar un formato de biblioteca compartida
  • fPIC: Generar código independiente de posición (código independiente de posición)
  • Reglas de nombre de biblioteca: libxxx.so

Utilice bibliotecas dinámicas

opciones de compilación

  • l: enlace a la biblioteca dinámica, siempre que el nombre de la biblioteca sea suficiente (elimine la biblioteca y el número de versión)
  • L: La ruta donde se encuentra la biblioteca de enlaces.

Aquí hay algo que me confunde

Si esto no se hace en un solo paso

En lugar de eso, úsalo así.

Los dos .gch formados de la siguiente manera no pueden ser reconocidos por el comando para empaquetar la biblioteca estática 

Compile 1 a través de bibliotecas dinámicas para formar archivos ejecutables.

 

Supongo que te gusta

Origin blog.csdn.net/m0_74234485/article/details/132631950
Recomendado
Clasificación