Sous Windows, EXE et DLL ont des informations sur la version, notamment les champs suivants:
- version du fichier
- Version de produit
- Nom interne
- nom du produit
- droits d'auteur
Dans Linux Library / Executable:
- Quels champs sont présents?
- Comment voir ces informations?
- Quels outils / bibliothèques à lire?
executable
libraries
version
linquize
la source
la source
/sbin/ldconfig -p
Réponses:
Les informations de version ne sont pas explicitement stockées dans un fichier ELF . Ce que vous avez dedans est le nom de la bibliothèque, le
soname
, qui inclut la version principale. La version complète est généralement stockée dans le nom de fichier de la bibliothèque.Si vous avez une bibliothèque, par exemple
libtest.so
, vous avez généralement:libtest.so.1.0.1
- Le fichier de bibliothèque lui-même, contenant la version complètelibtest.so.1
- Lien symbolique verslibtest.so.1.0.1
, ayant le même nom quesoname
libtest.so
- Lien symbolique àlibtest.so.1
utiliser pour la liaison.Dans le fichier de bibliothèque
libtest.so.1.0.1
, il y aura une entrée appeléeSONAME
dans la section dynamique, qui indiquera que cette bibliothèque est appeléelibtest.so.1
. Lorsque vous liez un programme à cette bibliothèque, le programme lié stockera lesoname
de la bibliothèque sous l'NEEDED
entrée dans la section dynamique.Si vous voulez vérifier en quoi consiste exactement le fichier ELF, vous pouvez essayer de lancer:
où
elffile
peut être soit une bibliothèque d'un exécutable.Si vous voulez simplement obtenir la version de la bibliothèque, vous pouvez jouer avec:
Autant que je sache, il n'y a pas de telles informations (du moins pas par défaut) dans les fichiers exécutables.
Vous pouvez également compter sur le programme lui-même ou sur votre système d’emballage, comme l’a écrit Rahul Patil.
la source
Vous pouvez utiliser
ldconfig -v | grep libraryname
, aussi commande a optioncommand -V
oubinaryfile --version
Exemple :
vous pouvez aussi utiliser yum ou aptitude en fonction de la distribution que vous utilisez, par exemple.
dans RHEL5 / CENTOS5 / Fedora, vous pouvez utiliser
yum info packagename
ou, s’il est installé, utilisezrpm --version packagename
Dans Ubuntu, vous pouvez utiliser
aptitude show pkgname
oudpkg --version pkgname
la source
rpm
, je pense que vous voudrezrpm --query pkgname
lister la chaîne de version (rpm --version
imprimera sa versionrpm
elle - même; il pourrait en être de même pourdpkg
)Pour les systèmes basés sur Redhat, procédez comme suit:
Extrayez le fichier required-packages, assurez-vous qu'il n'y a pas de noms de chemin dans les noms de fichier de bibliothèque. Si tel est le cas, supprimez-le et remplacez "libx.so.1" par "/bin/lib/libx.so.1".
Découvrez quel paquet contient la bibliothèque
Ou mettez ceci dans un script ou exécutez à partir de la ligne cmd:
Ensuite, créez le script suivant ou exécutez-le à partir de la ligne de commande:
Vous avez terminé, lancez votre programme. Si vous obtenez des erreurs d'interface graphique lors de l'exécution. Copiez-les et s'il s'agit de références de bibliothèques, recherchez les packages correspondants et installez-les de la même manière.
la source
Exécutez ceci pour obtenir des informations sur la version -
strings libssl.so.1.0.0 | grep "1\.0"
la source