…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.