J’avais un fichier de bibliothèque statique. Comment puis-je voir si elle est compilée dans la plate-forme i386 ou dans la plate-forme? Merci.
Dans les systèmes Unix (et similaires – disons Linux ou Minix), vous pouvez utiliser l’utilitaire “fichier”:
%file /lib/libc.so.7 libc.so.7: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, ssortingpped
(le %
indique une invite de shell et ne fait pas partie de la commande)
Comme pour Windows, je ne sais pas s’il existe déjà une commande intégrée, mais sinon, vous pouvez trouver l’utilitaire sur cette page: http://gnuwin32.sourceforge.net/packages.html (le package de file
est environ 1/3 en bas de la page).
EDIT: Pour les bibliothèques statiques (fichiers .a
), vous devez d’abord les extraire et vérifier un fichier .o
:
%cp /usr/lib/libchipmunk.a . %ar -x libchipmunk.a %file *.o chipmunk.co: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not ssortingpped
ATTENTION: ar -x ...
va polluer le répertoire local, alors assurez-vous de copier les fichiers ailleurs (par exemple /tmp/something
) en premier!
Je suis sûr qu’il existe un moyen de vérifier directement ces fichiers, mais cela fonctionne aussi bien!
objdump
est votre ami;)
$ objdump -f lib/lib.a
file
vous donne des informations générales sur la plateforme sous Linux.
par exemple
file /usr/lib/libfoo.a
ou pour un exécutable binary
file `which foo`
Utilisez le file
ou objdump
. file
fonctionne toujours, mais objdump
vous donnera des informations plus détaillées sur les bibliothèques et les archives et les exécutables.