Cómo comprobar la versión y otra información de los archivos de la biblioteca de enlaces dinámicos de Linux
Biblioteca de enlaces dinámicos del sistema
nm & ltexecutable file name>;
Ver los símbolos en el archivo ejecutable.
strip & ltexecutable file name>;
Eliminar las tablas de símbolos puede optimizar el archivo ejecutable.
Si queremos extraer alguna información de texto del programa ejecutable, también podemos utilizar el comando strings.
Usar cadena de línea
& lnombre de archivo ejecutable>;
Las bibliotecas compartidas dinámicas * * * en el sistema operativo Linux se pueden dividir aproximadamente en tres categorías:
1. Nivel del sistema operativo * * * bibliotecas compartidas y bibliotecas de herramientas básicas del sistema
Por ejemplo, libc.so, libz.so,
Libpthread.so, etc. , estas bibliotecas del sistema se colocarán en los directorios /lib y /usr/lib. Si es un sistema operativo de 64 bits, también estarán /lib64 y /usr.
Directorio/lib64. Si el sistema operativo tiene una interfaz gráfica, estará el directorio /usr/X11R6/lib. Si es un sistema operativo de 64 bits, estará /usr/X11R6.
Directorio/lib64. También puede haber otros directorios de bibliotecas del sistema para versiones específicas de Linux.
La integridad y las versiones correctas de estos archivos de biblioteca del sistema garantizan el funcionamiento normal de varios programas en Linux.
2. Sistema a nivel de aplicación * * * intercambio de bibliotecas.
Las bibliotecas que no están incluidas en el sistema operativo pero que pueden ser utilizadas por muchas aplicaciones generalmente se ubican en los directorios /usr/local/lib y /usr/local/lib64. Muchos programas compilados e instalados por usted mismo agregarán automáticamente /usr/local/lib al parámetro -L de gcc al compilar y automáticamente irán a /usr/local cuando se ejecute.
/lib Buscar * * *Disfruta de la biblioteca.
La aplicación encontrará automáticamente las dos bibliotecas dinámicas * * * anteriores y no es necesario que usted las configure ni se preocupe por ellas. ¿Por qué es esto? Porque de forma predeterminada, estos directorios se agregan a la ruta de búsqueda del vinculador dinámico. La ruta de búsqueda para la biblioteca del sistema Linux * * * se define en el archivo de configuración /etc/ld.so.conf. El formato del contenido del archivo es aproximadamente el siguiente:
/usr/X11R6/lib64.
/usr/X11R6/lib
/usr/local/lib
/lib64
/Biblioteca
/usr/lib64
/usr/lib
/usr/local/lib64
/usr/local/ImageMagick/lib
Supongamos que estamos en /usr. La biblioteca de gráficos ImageMagick está compilada e instalada en el directorio /local/ImageMagick y espero que otras aplicaciones puedan usarla.
Biblioteca dinámica * * * de ImageMagick, entonces solo necesitamos agregar el directorio /usr/local/ImageMagick/lib al archivo /etc/ld.so.conf y luego ejecutar: ldconfig.
Pídelo.
Ldcofig buscará en todos los directorios anteriores y creará un archivo de caché /etc/ld.so.cache para * * * la biblioteca de disfrute.
Para confirmar que ldconfig ha buscado en la biblioteca ImageMagick, podemos usar el comando de cadenas presentado anteriormente para extraer información de texto de ld.so.cache para verificar:
Usar cadenas de líneas
/etc /LD entonces . cache | grep ImageMagick
El resultado de salida es:
/usr/local/ImageMagick/lib/libwand . >/usr /local/ImageMagick/lib/libwand . libmagick . así
/usr/local/ImageMagick/lib/libmagick++ . Así que
¡funcionó!
3. Bibliotecas * * * dinámicas dedicadas a aplicaciones
Hay muchas * * * bibliotecas compartidas que solo son utilizadas por aplicaciones específicas, por lo que no es necesario agregar rutas de biblioteca del sistema. para evitar aplicaciones * * *Conflictos de versión entre bibliotecas compartidas. Por lo tanto, Linux también puede especificar temporalmente la ruta de búsqueda de la biblioteca de la aplicación configurando la variable de entorno LD_LIBRARY_PATH. Al igual que en el ejemplo que dimos anteriormente, podemos preconfigurarlo en el script de inicio de la aplicación.
LD_LIBRARY_PATH, que especifica la ruta de búsqueda de la biblioteca compartida adjunta a esta aplicación para que la aplicación pueda encontrarla.