Sur mon iMac Intel sous Mac OS X 10.5 ("Léopard"), lorsque j'essaye de voir si un exécutable est 32-bit ou 64-bit, PowerPC ou Intel, j'utilise (par exemple) la commande file:
[pbn@albert] /Users/pbn>file /bin/ls
/bin/ls: Mach-O universal binary with 2 architectures
/bin/ls (for architecture i386): Mach-O executable i386
/bin/ls (for architecture ppc7400): Mach-O executable ppc
[pbn@albert] /Users/pbn>
... ceci est un "Universal Binary". Il contient des binaires pour deux architectures: i386, c'est à dire x86 32-bit, et ppc c'est à dire PowerPC 32-bit. C'est un peu décevant: où sont les binaires 64-bit ?
En fait, Mac OS X 10.5 ("Léopard"), peut faire tourner les exécutables 32-bit et 64-bit, mais la majorité des exécutables sont toujours 32-bit.
Sous, Mac OS X 10.5 ("Léopard"), même le kernel est 32-bit:
[pbn@albert] /Users/pbn>uname -a
Darwin albert 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386
[pbn@albert] /Users/pbn>file /mach_kernel
/mach_kernel: Mach-O universal binary with 2 architectures
/mach_kernel (for architecture i386): Mach-O executable i386
/mach_kernel (for architecture ppc): Mach-O executable ppc
Cependant Cocoa, et donc les librairies (ou en bon français les bibliothèques) sont en 32-bit et 64-bit. Un exemple:
[pbn@albert] /Users/pbn>file /usr/lib/libSystem.dylib
/usr/lib/libSystem.dylib: Mach-O universal binary with 4 architectures
/usr/lib/libSystem.dylib (for architecture ppc7400): Mach-O dynamically linked shared library ppc
/usr/lib/libSystem.dylib (for architecture ppc64): Mach-O 64-bit dynamically linked shared library ppc64
/usr/lib/libSystem.dylib (for architecture i386): Mach-O dynamically linked shared library i386
/usr/lib/libSystem.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64
[pbn@albert] /Users/pbn>
... voilà qui est plus intéressant. On constate ici que cette librairie est un "Universal Binary" qui contient quatre binaires différents:
32-bit | 64-bit | |
PowerPC | ppc7400 | ppc64 |
Intel | i386 | x86_64 |
En fait la librairie /usr/lib/libSystem.dylib est particulièrement importante sous Mac OS X puisqu'elle contient entre autres toute la librairie glibc.
Il est logique que les librairies existent en 32-bit et 64-bit. En effet, pour pouvoir exécuter des exécutables 32-bit et 64-bit (compilés dynamiquement, en tous cas), il faut avoir quelque part les librairies à la fois en 32-bit et 64-bit.
Aucun commentaire:
Enregistrer un commentaire