(5) compilador gcc 2. Creación de biblioteca estática y biblioteca dinámica

Resumen de contenido:
      esta sección presenta principalmente la producción y el uso de bibliotecas estáticas y dinámicas, y compara las ventajas y desventajas de las bibliotecas estáticas y dinámicas.


Uno, la producción y uso de bibliotecas estáticas.

      Una biblioteca estática es un archivo que termina en .a en Linux. Las bibliotecas estáticas se utilizan al generar archivos ejecutables al vincular durante la compilación. La regla de nomenclatura de la biblioteca estática es lib + (libname) +. A, por ejemplo, libmytest.a

Pasos de producción:

Características mando
1. Generar archivo .o gcc -c hello.c -o hello.o
2. Empaque el archivo .o ar rcs libmytest.a *.o

El uso de bibliotecas estáticas:

Hay dos métodos que deben dominarse.

gcc 源文件 静态库 -o 输出文件名
gcc mian.c libmytest.a -o myapp
gcc 源文件 -L 库目录 -l 静态库的名字,不加lib的 -o 输出文件名
gcc mian.c -L lib -l mytest -o myapp

Puede usar el comando nm para ver los archivos .o en la biblioteca estática.

nm libmytest.a

Ventajas y desventajas de las bibliotecas estáticas

El uso de una biblioteca estática es agregar el archivo .o en la biblioteca estática al programa ejecutable al generar el programa ejecutable.
Ventajas: No
es necesario volver a vincular al ejecutar el programa, se ejecuta rápido y no es necesario proporcionar las bibliotecas correspondientes al publicar el programa.

Desventajas: el
programa ejecutable es relativamente grande y es necesario volver a compilar el programa cada vez que se actualiza la biblioteca.

En segundo lugar, la producción y el uso de bibliotecas dinámicas.

      La biblioteca dinámica es un archivo que termina en .so en linux. La biblioteca dinámica solo está vinculada cuando el archivo ejecutable se está ejecutando. La regla de nomenclatura de la biblioteca dinámica es lib + (libname) +. Entonces, por ejemplo, libmytest.so

Pasos de producción:

Características mando
1. Genere archivos .o independientes de la posición gcc -fPIC -c hello.c -o hello.o
2. Empaque el archivo .o gcc -shared -o libmytest.so *.o

Uso de biblioteca dinámica:

Hay dos métodos que deben dominarse.

gcc 源文件 动态库 -o 输出文件名
gcc mian.c libmytest.so -o myapp
gcc 源文件 -L 库目录 -l 动态库的名字,不加lib的 -o 输出文件名
gcc mian.c -L lib -l mytest -o myapp

Puede utilizar el comando ldd para ver las bibliotecas compartidas de las que depende el archivo ejecutable.

ldd myapp

Ventajas y desventajas de las bibliotecas dinámicas

El archivo ejecutable generado por la biblioteca dinámica debe estar vinculado a la biblioteca dinámica en tiempo de ejecución.
Ventajas: el
programa ejecutable es pequeño y no es necesario volver a compilar cada actualización de la biblioteca.

Desventajas: Se
ejecuta lentamente y se debe proporcionar la biblioteca correspondiente cuando se lanza el programa.

Tres, especifique la ubicación de la biblioteca compartida

El vinculador no puede encontrar la ubicación de la biblioteca compartida y necesita configurar variables de entorno.
Hay dos métodos
(1) Uso temporal, generalmente para pruebas, asigne LD_LIBRARY_PATH a la dirección de la biblioteca compartida.

export LD_LIBRARY_PATH = ./lib

(2) Usado para configuración permanente
1. Modifique el archivo de configuración del enlazador dinámico.

vi /etc/ld.so.conf

2. Agregue la dirección absoluta de la biblioteca dinámica en ld.so.conf

/home/itcast/calc/lib

3. Actualice el archivo ld.so.conf

sudo ldconfig -v

Son solo algunos comandos relacionados para crear bibliotecas dinámicas y estáticas, echemos un vistazo cuando se usan.

Supongo que te gusta

Origin blog.csdn.net/qq_23844501/article/details/113844433
Recomendado
Clasificación