Comment voir la plateforme de compilation d’un fichier de bibliothèque statique

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.