Usa ar para crear bibliotecas estáticas

Uno, conoce la biblioteca estática

  1. Utilice .a como sufijo, generalmente denominado libxxx.a en Linux;
  2. Cuando el programa usa una biblioteca estática, el vinculador (ld) copia todas las funciones de libxxx.a completo en el archivo ejecutable;

2. Ventajas y desventajas

Ventajas: cuando se usa una biblioteca estática, después de compilarla en un archivo ejecutable, no depende de la biblioteca en tiempo de ejecución.

Desventajas: el archivo ejecutable es grande y la biblioteca estática ha cambiado, el archivo ejecutable debe regenerarse.

Tres, cómo crear y usar bibliotecas estáticas

Herramienta: ar, empaqueta el archivo de objeto .o en una biblioteca estática separada.

Pasos para crear una biblioteca estática en Linux:

  1. Editar archivos de código fuente (.c, .cpp)
  2. Genere el archivo de objeto * .o a través de gcc -c * .c o doble g ++ -c * .cpp
  3. Use ar para empaquetar archivos de objetos y generar bibliotecas estáticas
  4. Proporcionar archivos de encabezado para bibliotecas estáticas (es decir, archivos * .h como interfaces de servicio provistas por bibliotecas estáticas)

El uso del comando ar:

语法 : ar [-] {dmpqrtx} [abcfilNoPsSuvV] [nombre de miembro] [recuento] archivos de almacenamiento ...

parámetro:

 Parámetro de instrucción 

  -d eliminar archivos miembros en el archivo de la biblioteca

 -m cambiar el orden de los archivos miembros en el archivo de la biblioteca 

-p muestra el contenido de los archivos miembros en el archivo de la biblioteca 

-q agrega el archivo al final del archivo de la biblioteca 

-r inserta el archivo en el archivo de la biblioteca

-t muestra los archivos contenidos en el archivo de la biblioteca 

-x Eliminar archivos miembros de archivos de biblioteca

Parámetro de opción

a <Archivo miembro> Inserte el archivo después del archivo miembro especificado en el archivo de biblioteca.

b <Archivo miembro> Inserte el archivo antes del archivo miembro especificado en el archivo de biblioteca.

c Cree archivos de biblioteca.

f Para evitar que el nombre de archivo largo no sea compatible con el comando ar de otros sistemas, este parámetro se puede utilizar para cortar el nombre de archivo de miembro largo para colocarlo en el archivo de biblioteca.

i <archivo de miembro> Inserte el miembro antes del archivo de miembro especificado en el archivo de biblioteca.

o Conserve la fecha del archivo en el archivo de la biblioteca.

s Si el modo de objeto está incluido en el archivo de la biblioteca, este parámetro se puede utilizar para crear una tabla de símbolos para el archivo que se guardará.

S no genera una tabla de símbolos.

u Solo inserte archivos con una fecha más reciente en el archivo de la biblioteca.

v Mostrar información detallada cuando se ejecuta el programa.

V Muestra información sobre la versión.

Cuatro, castañas

test.h

int add(int a, int b);

test.cpp

#include "test.h"

int add(int a, int b)
{
    return (a + b);
}

Compilar:

[xy@xunye ar]$ g++ -c test.cpp 
[xy@xunye ar]$ ls
test.cpp  test.h  test.o

Crea una biblioteca estática:

[xy@xunye ar]$ ar rcs libtest.a *.o
[xy@xunye ar]$ ls
libtest.a  test.cpp  test.h  test.o

Utilice bibliotecas estáticas:

main.cpp

#include "test.h"
#include <iostream>

using namespace std;

int main(int argc, char const *argv[])
{
    cout << add(3, 2) << endl;

    return 0;
}

Crea un archivo ejecutable:

[xy@xunye use_lib]$ ls
libtest.a  main.cpp  test.h
[xy@xunye use_lib]$ g++ -o main main.cpp -L. -ltest
[xy@xunye use_lib]$ ls
libtest.a  main  main.cpp  test.h
[xy@xunye use_lib]$ ./main 
5

Descripción: -L especifica la ruta para que g ++ busque bibliotecas estáticas; "." Significa buscar en la ruta actual

          -l especifica una biblioteca específica, entre las cuales se pueden escribir lib y .a sin mostrar

[Nota] El orden de búsqueda de bibliotecas para gcc o g ++: primero busque la biblioteca dinámica. Entonces, si no la encuentra, busque la biblioteca estática .a.

Supongo que te gusta

Origin blog.csdn.net/xunye_dream/article/details/110727531
Recomendado
Clasificación