Compatibilité 32bits

De Diablotins.org.


Compiler des programmes écrits pour i386/32 bits.
Image:brush.png
Vous avez une machine 64 bits ( probablement un AMD64), vous avez légitimement utilisé un noyau et monde de cet environnement.


Mais, certains logiciels restent «bloqués» sur le mode i386/32bits et refusent de compiler.
Voici comment passer outre.




Sommaire

Espace de compatibilité

Logiquement, nous allons le situer sous /compat, avec son collègue de compatibilité Linux.

mkdir -p /compat/i386

Créer un monde compatible

Rien de plus «simple», il suffit de changer le processeur cible (TARGET) et le répertoire cible (DESTDIR):

cd /usr/src && make buildworld installworld distribution TARGET=i386 DESTDIR=/compat/i386

N'oubliez pas de copier les configurations propres à la machine dans /compat/i386/etc.
Notamment, pour la configuration réseau, /etc/resolv.conf

Compiler les ports

Ensuite, définissons une nouvelle racine de travail.

chroot /compat/i386

Puis, recréons un monde en 32bits:

# /etc/rc.d/ldconfig start
# mount -t devfs devfs /dev
# mkdir -p /usr/ports

Lions ce répertoire au catalogue des ports de notre machine, depuis l'extérieur du chroot:

# mount -t nullfs -o rw /usr/ports /compat/i386/usr/ports

Créons un environnement compatible:

# setenv MACHINE i386
# setenv UNAME_p i386
# setenv UNAME_m i386

Puis compilez le port désiré, depuis le chroot

# cd /usr/ports/xxx/yyy && make install clean

Exemple

Pour Wine, après l'avoir compilé: Définissez le nouvel espace de bibliothèques:

setenv LD_32_LIBRARY_PATH /compat/i386/usr/local/lib
setenv PATH /compat/i386/usr/local/bin:$PATH 

Puis lancez le

/compat/i386/usr/local/bin/winecfg
/compat/i386/usr/local/bin/wine
Projets :