La biblioteca tiene tanto dinámica como estática. La dinámica generalmente usa .so como sufijo y estática con .a como sufijo.
Ejemplo: libhello.so libhello.a Para usar diferentes versiones de la biblioteca en el mismo sistema, puede agregar el número de versión al sufijo después del nombre del archivo de la biblioteca, por ejemplo: libhello.so.1.0, debido a la conexión predeterminada del programa Utilice .so como la extensión de archivo. Entonces, para usar estas bibliotecas, es común usar una forma de establecer conexiones simbólicas.
$ ln -s libhello.so.1.0 libhello.so.1 //No sé cuál es el uso de libhello.so.1 en este lugar? ?
$ ln -s libhello.so.1 libhello.so
1, usando la biblioteca
Cuando quiera usar una biblioteca estática, el conector encontrará el programa Las funciones requeridas se copian al archivo ejecutable. Dado que esta copia está completa, una vez que la conexión se realiza correctamente, la biblioteca estática ya no es necesaria. Sin embargo, este no es el caso de las bibliotecas dinámicas. La biblioteca dinámica deja una marca en el ejecutable que indica que la biblioteca debe cargarse primero cuando se ejecuta el programa. Dado que la biblioteca dinámica ahorra espacio, la operación predeterminada de conexión bajo Linux es conectar primero la biblioteca dinámica, es decir, si hay bibliotecas estáticas y dinámicas al mismo tiempo, si no se especifica, se conectará con la biblioteca dinámica.
Ahora suponga que hay un paquete de desarrollo de programa llamado hola, que proporciona una biblioteca estática libhello.a una biblioteca dinámica libhello.so, un archivo de encabezado hola.h, el archivo de cabecera proporciona sayhello () esta función: < Br>
/*hello.h * /
void sayhello ();
Hay alguna otra documentación.
Esta es una estructura típica de paquete de desarrollo de programas. De manera predeterminada, Linux es la conexión de la biblioteca dinámica, el siguiente programa testlib.c usa la función sayhello () en la biblioteca hello
/*testlib.c*/
#include < stdio.h >
#include " hello.h "
int main () {sayhello (); return 0;}
Use el siguiente comando para compilar $ gcc -c testlib .c -o testlib.o
Conéctese con el siguiente comando: $ gcc testlib.o -lhello -o testlib
Tenga cuidado al conectarse, suponga que faltan libhello.o y libhello.a Bajo la ruta de búsqueda de la biblioteca en /usr /lib, si desea agregar el parámetro -L a otras ubicaciones
, es más problemático conectarse con la biblioteca estática, principalmente el problema del parámetro. O el ejemplo anterior:
$ gcc testlib.o -o testlib -WI, -Bstatic -lhello # -WI, -Bstatic no tiene efecto en mi máquina, cambió a -static eficaz
Nota: Este parámetro especial "-WI, -Bstatic" se pasa realmente al conector ld. Indica que está conectado a la biblioteca estática. Si solo hay una biblioteca estática en el sistema, por supuesto, este parámetro no es necesario. Si desea conectarse a varias bibliotecas, y cada biblioteca está conectada de manera diferente, por ejemplo, el programa anterior debe estar estáticamente conectado con libhello y conectado dinámicamente con libbye. El comando debe ser: $ gcc testlib.o -o testlib -WI, -Bstatic -lhello -WI, -Bdynamic -lbye
2. Problemas de ruta para bibliotecas dinámicas Para que el ejecutable pueda encontrar bibliotecas dinámicas sin problemas, hay tres formas:
(1) Copie la biblioteca a los directorios /usr /lib y /lib.
(2) Agregue la ruta de la biblioteca en la variable de entorno LD_LIBRARY_PATH. Por ejemplo, la biblioteca dinámica libhello.so está en el directorio /home /ting /lib, usando bash como ejemplo. Use el comando:
$ export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: /home /ting /lib
( 3) Modifique el archivo /etc/ld.so.conf, agregue la ruta donde se encuentra la biblioteca al final del archivo y ejecute ldconfig para actualizar. De esta manera, todos los archivos de la biblioteca en el directorio unido son visibles.
3. Visualización de símbolos en la biblioteca
En ocasiones, puede ser necesario ver qué funciones hay en una biblioteca. El comando nm puede imprimir todos los símbolos involucrados en la biblioteca. Las bibliotecas pueden ser estáticas o dinámicas. Hay muchos símbolos listados en nm, hay tres comunes, uno se llama en la biblioteca, pero no está definido en la biblioteca (lo que indica que se necesita otro soporte de biblioteca), representado por U; uno es la función definida en la biblioteca, Este es el más común con T, el otro es el llamado símbolo "débil", que se define en la biblioteca pero puede estar cubierto por símbolos del mismo nombre en otras bibliotecas, denotadas por W. Por ejemplo, supongamos que el desarrollador quiere saber si printf () está definido en la biblioteca de saludo mencionada anteriormente:
$ nm libhello.so
2011 es el vigésimo aniversario de Linux y el 18 ° aniversario del lanzamiento de Debian. Linux ha e
Según las estadísticas de statcounter, la cuota de mercado del sistema operativo global en marzo sig
BSD (Berkeley Software Distribution) es un derivado de Unix que fue desarrollado y publicado por la
Linux como un derivado de Unix sistema operativo , Linux se ha incorporado en vista de la actual ps
Compartir archivos de Linux - procesar y abrir archivos
Descripción detallada del montaje en disco duro bajo el sistema Linux
Ideas de optimización del sistema Linux
Linux ver el estado del disco de guía IO
Uso gratuito de la documentación de Windows en el escritorio de Linux
Métodos comunes de solución de problemas para sistemas Linux
Configurando VNCSERVER en RHEL5
La línea de comandos de la consola del sistema operativo Linux le da consejos para compartir
Tutorial básico de instalación y configuración de proxy inverso de Squid3
¿Cómo muestra el calendario de Win10 las vacaciones chinas?
Win8 instala la tarjeta de red inalámbrica cuando se configura el error. Regla 342 cómo resolver
El sistema Win10 para agregar paquetes de voz a la imagen ISO
Método de instalación de Vista previa de Windows 8.1
Win10 nueva función Video de demostración de inicio de Continuum: experiencia consistente
¿Qué debo hacer si la versión oficial de win10 del software del programa se muestra borrosa?
Windowsxp método de eliminar rápidamente el virus explorer.exe
Cómo distinguir entre la herramienta pony activada win10 y la genuina win10