コンパイル オプションが次の場合、Linux は 32 ビット サポートを明示的に実装します。
CONFIG_IA32_EMULATION=y
が設定されています。
これは、Ubuntu 14.04 を含むほとんどのまともなディストリビューションで行われます。
もちろん、32 ビット エミュレーションが可能なのは、x86-64 プロセッサが、カーネルが使用方法を認識している 32 ビット エミュレーション モードを介して 32 ビット実行可能ファイルと下位互換性を持つように設計されているためです。
もう 1 つ心配しなければならないのはライブラリです。32 ビット プログラムをコンパイルするには、32 ビット ライブラリが必要です。Ubuntu 14.04 AMD64 の場合:
sudo apt-get install gcc-multilib
次に、hello world で簡単にテストできます。
#include <stdio.h>
#include <stdlib.h>
int main() {
puts("hello world");
return EXIT_SUCCESS;
}
と:
gcc -m32 hello_world.c
./a.out
どちらが印刷されますか:
hello world
と:
file a.out
32 ビットであることを確認します。
ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=358f7969deeb2f24a8dd932a0d296887af4eae30, not stripped