32-Bit Software auf 64-Bit Systemen bauen

…ist eigentlich ganz einfach, denn glücklicherweise ist das Problem alltäglich. Daher liefert der gcc die Option -m32 (bzw. -m64) mit, um i386-Object-Files zu bauen.

> gcc -m32 -o 32bitExe helloworld.c
> gcc -m64 -o 64bitExe helloworld.c

Dabei trat bei mir zunächst der Fehler auf, dass über die stdio.h die Datei bits/predefs.h eingebunden wurde, aber nicht gefunden werden konnte:

/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory

Hierfür muss das Paket libc6-dev-i386 nachinstalliert werden. Eventuell fehlt auch gcc-multilib.

> sudo apt-get install libc6-dev-i386 gcc-multilib

Das ganze funktioniert ebenfalls in C++, hier findet der Linker jedoch die stdc++-Library nicht. Auch hier muss ein Paket nachinstalliert werden

> sudo apt-get install g++-multilib

Hiermit konnte ich meine Software für i386 auf einer 64-Bit-CPU kompilieren.