2010-07-31 2 views
23

J'ai besoin de savoir si j'ai compilé libjpeg pour l'architecture 32 ou 64 bits, mais je ne sais pas comment le savoir, y at-il une commande qui me permettra de vérifier?Sous OS X, comment puis-je savoir à quelle architecture une bibliothèque partagée est compilée?

+2

double possible de [déterminer si un exécutable (ou bibliothèque) est de 32 -ou 64 bits (sur OSX)] (http://stackoverflow.com/questions/1941825/determine-if-an-executable -ou-bibliothèque-est-32-ou-64-bits-sur-osx) – outis

Répondre

29

type juste file libjpeg.dylib et vous obtiendrez la sortie suivante

libpoll.dylib: Mach-O universal binary with 3 architectures 
libpoll.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64 
libpoll.dylib (for architecture i386): Mach-O dynamically linked shared library i386 
libpoll.dylib (for architecture ppc7400): Mach-O dynamically linked shared library ppc 
7

Utilisez la commande file:

[[email protected]:Xcode/FSLogger]$ file ./original     (07-31 02:53) 
./original: Mach-O executable i386 
15

La commande file fonctionnera très bien. Vous pouvez également utiliser otool pour imprimer les en-têtes gras.

$ otool -vf /usr/lib/libSystem.B.dylib 
Fat headers 
fat_magic FAT_MAGIC 
nfat_arch 2 
architecture ppc 
    cputype CPU_TYPE_POWERPC 
    cpusubtype CPU_SUBTYPE_POWERPC_ALL 
    offset 4096 
    size 2221800 
    align 2^12 (4096) 
architecture ppc64 
    cputype CPU_TYPE_POWERPC64 
    cpusubtype CPU_SUBTYPE_POWERPC64_ALL 
    offset 2228224 
    size 2169980 
    align 2^12 (4096) 
Questions connexes