En Windows, EXE y DLL tienen información de versión, que incluye al menos los siguientes campos:
- versión del archivo
- version del producto
- nombre interno
- nombre del producto
- derechos de autor
En la biblioteca de Linux / ejecutable:
- ¿Qué campos están presentes?
- ¿Cómo ver esa información?
- ¿Qué herramientas / bibliotecas para leer?
executable
libraries
version
linquizar
fuente
fuente
/sbin/ldconfig -p
Respuestas:
La información de la versión no se almacena explícitamente en un archivo ELF . Lo que tiene allí es el nombre de la biblioteca
soname
, que incluye la versión principal. La versión completa generalmente se almacena como parte del nombre del archivo de la biblioteca.Si tiene biblioteca, por ejemplo
libtest.so
, generalmente tiene:libtest.so.1.0.1
- El archivo de la biblioteca en sí, que contiene la versión completalibtest.so.1
- Enlace simbólico alibtest.so.1.0.1
, que tiene el mismo nombre quesoname
libtest.so
- Enlace simbólico alibtest.so.1
utilizado para vincular.En el archivo de la biblioteca
libtest.so.1.0.1
, habrá una entrada llamadaSONAME
en la sección dinámica, que dirá que se llama a esta bibliotecalibtest.so.1
. Cuando vincula un programa con esta biblioteca, el programa vinculado almacenará elsoname
de la biblioteca bajo laNEEDED
entrada en la sección dinámica.Si desea verificar, qué es exactamente en qué archivo ELF, puede intentar ejecutar:
donde
elffile
puede ser una biblioteca de un ejecutable.Si simplemente quieres obtener la versión de la biblioteca, puedes jugar con:
AFAIK, no existe dicha información (al menos no de manera predeterminada) en los archivos ejecutables.
O puede confiar en el programa en sí o en su sistema de empaque, como escribió Rahul Patil.
fuente
Puede usar
ldconfig -v | grep libraryname
, también el comando tiene la opcióncommand -V
obinaryfile --version
ejemplo:
También puede usar yum o aptitude en función de la distribución que está utilizando, por ejemplo.
en RHEL5 / CENTOS5 / Fedora puede usar
yum info packagename
o si está instalado, userpm --version packagename
En Ubuntu puedes usar
aptitude show pkgname
odpkg --version pkgname
fuente
rpm
, creo que querrásrpm --query pkgname
enumerar la cadena de versión (rpm --version
imprimirá la versión derpm
sí mismo; lo mismo podría ser cierto paradpkg
)Para los sistemas basados en Redhat, haga esto:
Consulte el archivo de paquetes necesarios, asegúrese de que no haya nombres de ruta en los nombres de archivo de la biblioteca. Si es así, quítelos, así que "/bin/lib/libx.so.1" cambie a "libx.so.1"
Descubra qué paquete contiene la biblioteca
O ponga esto en un script o ejecute desde la línea cmd:
A continuación, cree el siguiente script o ejecútelo desde la línea cmd:
Ya terminaste, ejecuta tu programa. Si obtiene errores de GUI cuando se ejecuta. Cópielos y, si son referencias de biblioteca, busque los paquetes para ellos e instálelos de la misma manera.
fuente
Ejecute esto para obtener información de la versión:
strings libssl.so.1.0.0 | grep "1\.0"
fuente