dimanche 21 juin 2009

print-size-of-pointer: exécution sous Solaris

Voici ce qui se passe lorsque j'exécute mon programme print-size-of-pointer sur ma Sun Fire sous Solaris:
(Il y a deux versions: compilé en 32-bit et compilé en 64-bit):

Résultat sur fire (Sun Fire 64-bit):
Version du kernel:
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>uname -a
SunOS fire 5.10 Generic_118833-33 sun4u sparc SUNW,UltraAX-i2

Sommes-nous en 64-bit ?
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>isainfo -b
64

Oui, nous sommes en 64-bit

Voyons les fichiers
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>ls -l
total 142
-rwxr-xr-x 1 pbn users 6587 Jun 1 20:00 print-sizeof-pointer-linux-32bit.bin
-rwxr-xr-x 1 pbn users 9415 Jun 1 20:00 print-sizeof-pointer-linux-64bit.bin
-rwxr-xr-x 1 pbn users 53640 Jun 1 20:00 print-sizeof-pointer-macosx.bin
-rw-r--r-- 1 pbn users 561 Jun 1 20:00 print-sizeof-pointer.c


Je compile mon programme en 32-bit
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>gcc -o print-sizeof-pointer-solaris-32bit.bin -m32 print-sizeof-pointer.c

Je compile mon programme en 64-bit
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>gcc -o print-sizeof-pointer-solaris-64bit.bin -m64 print-sizeof-pointer.c

Voyons de quel type d'exécutable il s'agit:
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>file *solaris*
print-sizeof-pointer-solaris-32bit.bin: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped, no debugging information available
print-sizeof-pointer-solaris-64bit.bin: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped, no debugging information available


J'exécute la version 32-bit de mon programme:
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>./print-sizeof-pointer-solaris-32bit.bin
print-sizeof-pointer.c
If the result is 8, this machine is a 64-bit system.
If the result is 4, this machine is a 32-bit system.
Result: 4


J'exécute la version 64-bit de mon programme:
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>./print-sizeof-pointer-solaris-64bit.bin
print-sizeof-pointer.c
If the result is 8, this machine is a 64-bit system.
If the result is 4, this machine is a 32-bit system.
Result: 8
[pbn@fire] /export/home/pbn/Documents/print-sizeof-pointer>


En bref sous Solaris sur une machine 64-bit avec un OS 64-bit, je peux à la fois exécuter les exécutables 32-bit et 64-bit. Et en fait, les exécutables 32-bit ont leurs adresses en 32-bit, les exécutables 64-bit ont leurs adresses en 64-bit.

Aucun commentaire: