GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo enumerar las bibliotecas compartidas utilizadas por los ejecutables en Linux

En un entorno de sistema operativo Linux, los ejecutables binarios asociados con las aplicaciones/programas que desea ejecutar están directamente vinculados con bibliotecas compartidas cargadas en tiempo de ejecución.

Como usuario de Linux curioso y en evolución, se sentirá tentado a hacerse una idea acerca de estas bibliotecas compartidas involucradas/vinculadas con los ejecutables binarios que está ejecutando durante el inicio normal de un programa.

Este artículo nos guiará a través de varios enfoques para descubrir todas las bibliotecas compartidas utilizadas por los ejecutables en Linux.

Breve descripción general de las bibliotecas de Linux

Un programador o un usuario familiarizado con el mundo de la programación definirá una biblioteca como piezas de código/segmentos precompilados reunidos de manera/formato organizado. La naturaleza/atributo precompilado de una biblioteca hace que sea flexible y fácil de reutilizar entre diferentes programas.

Bajo la arquitectura del sistema operativo Linux, podemos clasificar las bibliotecas como estáticas (bibliotecas estáticas ) o compartido (bibliotecas compartidas ).

Las bibliotecas estáticas están vinculadas estáticamente a un programa específico y solo se puede acceder a ellas durante el tiempo de compilación del programa. Las bibliotecas compartidas se activan una vez que se inicia un programa y residirán en la memoria durante la duración del tiempo de ejecución del programa.

Cómo encontrar las bibliotecas compartidas de un programa en Linux

Antes de determinar las bibliotecas compartidas asociadas con su programa de destino, primero debe saber dónde reside el ejecutable asociado con su programa. En Linux, la ubicación de los ejecutables de sus programas suele estar dentro de /usr/bin directorio.

$ ls -l /usr/bin

La columna en el extremo derecho enumera los nombres de los ejecutables de sus programas.

Encuentre bibliotecas compartidas del programa Linux usando el comando ldd

El ldd El comando existe como un script de shell sencillo que apunta a las bibliotecas compartidas de un programa. Según la captura de pantalla anterior, intentemos, por ejemplo, generar las bibliotecas compartidas asociadas con la aplicación anydesk.

Podríamos determinar la ubicación del ejecutable de Anydesk con el comando:

$ whereis anydesk

Para determinar sus bibliotecas compartidas a través de ldd comando, ejecutaremos:

$ ldd /usr/bin/anydesk 

Como puede ver, tenemos una lista de numerosas bibliotecas asociadas con anydesk solicitud. Tenga en cuenta que el ldd El comando tiende a ejecutar programas consultados para recuperar información de bibliotecas compartidas. Por lo tanto, solo asocie el comando con ejecutables confiables.

Encuentre bibliotecas compartidas de programas usando los comandos objdump y grep

El objdump comando que forma parte de GNU Binutils El paquete se centrará en mostrar la información de los archivos de objetos, mientras que grep El comando enumerará las bibliotecas compartidas asociadas del programa.

Veamos qué producirán estos comandos para un programa como whois utilizado para información de nombres de dominio.

$ whereis whois 

A continuación, descubra las bibliotecas compartidas del programa.

$ objdump -p /usr/bin/whois | grep 'NEEDED'

Como puede ver, el whois El ejecutable del programa de búsqueda de dominio está asociado con dos bibliotecas compartidas.

Alternativamente, también puede usar el readelf comando para recuperar información compartida para el ejecutable del programa zip.

$ whereis zip
$ readelf --dynamic /usr/bin/zip | grep NEEDED

Según el resultado, el zip El ejecutable del programa está asociado con dos bibliotecas compartidas.

Encuentre bibliotecas compartidas usando el comando Awk

Esta opción es ideal para un programa que ya se está ejecutando. Primero necesitamos obtener su PID (ID de proceso ). Por ejemplo, digamos que tenemos el Flameshot Utilidad de captura de pantalla ejecutándose.

Para obtener su PID , ejecutaremos:

$ pgrep flameshot 

45261

Nuestro /proc//maps el archivo se transformará a /proc/45261/maps . Ahora podemos combinar este archivo con el awk comando para recuperar Flameshot bibliotecas compartidas ejecutables como se muestra a continuación.

$ awk '$NF!~/\.so/{next} {$0=$NF} !a[$0]++' /proc/45261/maps

Ahora conocemos bien la lista de todas las bibliotecas compartidas asociadas con los ejecutables del programa en Linux.


Linux
  1. Cómo administrar y enumerar servicios en Linux

  2. Introducción a las bibliotecas compartidas de Linux (Cómo crear bibliotecas compartidas)

  3. ¿Cómo mostrar todas las bibliotecas compartidas utilizadas por los ejecutables en Linux?

  4. Eliminando las bibliotecas compartidas de Linux

  5. ¿Cómo enumerar los procesos adjuntos a un segmento de memoria compartida en Linux?

Cómo enumerar los paquetes instalados en Linux

Cómo enumerar particiones de disco en Linux

Cómo enumerar los miembros de un grupo en Linux

Cómo listar usuarios en Linux

Cómo enumerar discos en Linux

Cómo enumerar servicios en Linux