Nous distribuons sous Linux une librairie statique en version 64 bits et 32 bits. Lorsque je dépanne un client, j'aimerais que mon shell de diagnostic script élimine rapidement le problème en vérifiant le fichier d'archive .a pour déterminer s'il s'agit d'une version 32 ou 64 bits. Les méthodes qui me viennent à l'esprit ne sont pas très élégantes :
-
extraire un membre .o et demander la commande "file" (par exemple, ELF 32-bit etc.)
-
commencer à inclure un membre factice codé pour indiquer, par exemple 32bit.o/64bit.o et utiliser "ar -t" pour vérifier
J'ai essayé "strings xyz.a | grep 32" mais cela ne fonctionne pas bien sur les versions. Ce n'est pas un problème insurmontable, mais si vous connaissez une solution élégante, j'aimerais la connaître.
0 votes
Je suis au courant stackoverflow.com/questions/184502/ à la recherche d'une meilleure solution.
2 votes
La solution dans l'autre question semble résoudre le problème de manière assez nette, mais une façon rapide est nm foo.a | grep '^0' | head -1 | wc -c - si le résultat est 17 (16+1 == 8bytes + 1 char pour le retour à la ligne), c'est 64bit, si c'est 9 c'est 32bit (8+1 == 4bytes + 1 char pour le retour à la ligne).
0 votes
Et si j'ai 14 ans ? o_0