web-dev-qa-db-fra.com

Comment vérifier si une bibliothèque statique est construite pour 64 bits?

Je viens de construire une bibliothèque statique pour iOS avec le paramètre de construction pour Architectures défini sur $(ARCHS_STANDARD_INCLUDING_64_BIT).

Je veux m'assurer que la bibliothèque .a inclut correctement cette architecture, mais quand j'exécute lipo -info Dessus, je vois:

Les architectures du fichier fat: library.a sont les suivantes: armv7 armv7s (cputype (16777228) cpusubtype (0))

Est-ce que cela signifie qu'arm64 n'est pas inclus? Si la commande lipo ne peut pas me le dire, y a-t-il une autre façon de le dire?

J'utilise Xcode 5 avec les derniers outils de ligne de commande installés.

72
Joel Fischer

Oui, une tranche arm64 est là. Pour le voir, vous devez utiliser lipo depuis la chaîne d’outils iOS, et non depuis le système hôte (qui ne connaît pas arm64):

xcrun -sdk iphoneos lipo -info $(FILENAME)
116
Stephen Canon

le bon vieux file peut aussi faire l'affaire:

$ file libTestFlight.a

libTestFlight.a: Mach-O universal binary with 5 architectures
libTestFlight.a (for architecture armv7):   current ar archive random library
libTestFlight.a (for architecture armv7s):  current ar archive random library
libTestFlight.a (for architecture i386):    current ar archive random library
libTestFlight.a (for architecture x86_64):  current ar archive random library
libTestFlight.a (for architecture cputype (16777228) cpusubtype (0)):   current ar archive random library

Il semble que personne à Apple ne se soit soucié d'ajouter le cputype arm64 à file, pour le moment.

Fait intéressant, dans les vidéos techniques iOS 7 Talk Talk ("Architecture des applications modernes, 2ème partie", PDF page 35), elles affichent la sortie d'un outil de travail en cours:

enter image description here

64
Nikolai Ruhe

Pour un .framework

lipo -info myFramework.framework/MyFramework

15
Matthieu Riegler