Red de conocimientos turísticos - Información de alquiler - La diferencia entre bibliotecas dinámicas y bibliotecas estáticas

La diferencia entre bibliotecas dinámicas y bibliotecas estáticas

Por lo general, convertimos algunas funciones de uso común en bibliotecas de funciones para que las utilicen otros programas.

Las bibliotecas de funciones se dividen en dos tipos: bibliotecas de funciones estáticas y bibliotecas de funciones dinámicas.

La biblioteca estática se vinculará al código de destino al compilar el programa y ya no será necesaria cuando el programa se esté ejecutando.

La biblioteca dinámica no estará vinculada al código de destino cuando se compila el programa, pero se cargará cuando el programa se esté ejecutando, por lo que la biblioteca dinámica es necesaria cuando el programa se está ejecutando.

Este artículo utilizará ejemplos para presentar cómo crear bibliotecas estáticas y bibliotecas dinámicas en Linux y cómo usarlas.

Antes de crear la biblioteca, preparemos el programa fuente para el ejemplo y compilemos el programa fuente de la biblioteca en un archivo .o.

Paso 1: Edite los programas que dieron como resultado el ejemplo: hola.h, hola.c y main.c.

hello.h (consulte el Programa 1) es el encabezado; archivo de la biblioteca.

hello.c (ver Programa 2) es el programa fuente de la biblioteca, que contiene la utilidad hello, que imprime "¡Hola XXX!" en la pantalla.

main.c (ver programa 3) es el programa principal del archivo de la biblioteca de prueba, que llama a la utilidad hola. c

#include

void hola(const char *nombre)

{

printf("¡Hola s! n", nombre );

}

Programa 3: main.c

#include "hello.h"

int main()

{

hola("todos");

return 0;

}

Paso 2: Reemplazar hola .c se compila en archivos .o;

Las bibliotecas estáticas y dinámicas se crean a partir de archivos .o. Por lo tanto, primero debemos compilar el programa fuente hello.c en un archivo .o a través de gcc.

Escriba el siguiente comando en el símbolo del sistema para obtener el archivo hello.o.

# gcc -c hello.c

#

(Nota 1: este artículo no presenta el uso del comando ni la función de sus parámetros. Si desea obtener más información, consulte otros documentos).

(Nota 2: el primer carácter "#" es el mensaje del sistema, no es necesario escribirlo, igual que a continuación).

Ejecutamos el comando ls para ver si el archivo hello.o está activo.

# ls

hello.c hello.h hello.o main.c

#

(Nota 3: Los primeros caracteres distintos de "#" son el resultado de la operación del sistema, que es el mismo que se muestra a continuación)

En el resultado del comando ls, vemos el archivo hello.o y este paso se completa.

Veamos cómo crear y utilizar una biblioteca estática.

Paso 3: cree una biblioteca estática a partir del archivo .o;

La convención de nomenclatura para los nombres de archivos de bibliotecas estáticas es agregar lib antes del nombre y luego el nombre de la biblioteca estática. , y la extensión para.a. Por ejemplo, si creamos una biblioteca estática llamada myhello, entonces el nombre del archivo de la biblioteca estática es libmyhello.a. Para crear una biblioteca estática, use el comando ar.

Escriba el siguiente comando en el símbolo del sistema para crear el archivo de biblioteca estática libmyhello.a.

# ar cr libmyhello.a hello.o

#

También podemos ejecutar el comando ls para ver los resultados:

# ls

hello.c hello.h hello.o libmyhello.a main.c

#