1月
29
今の Ubuntu は、Intel プロセッサ向けだと amd64 (64bit) のものしかなくて i386 (32bit) のものはありません。amd64 な環境でも i386 なプログラムは実行できるのですが、開発のためには普通の gcc などの他に追加のパッケージをインストールする必要があります。ただし、ガッツリとしたクロスコンパイルのためのパッケージをインストールする必要はありません。
gcc や clang で C の 32bit 開発をする場合は、gcc-multilib パッケージをインストールします。これは dependency package で、実際に 32bit 開発に必要なファイルをインストールしてくるのは libc6-dev-i386, libc6-dev-x32, lib32gcc-11-dev, libx32gcc-11-dev です(11 の所は gcc のバージョン)。x32 ってまだ生きてたんだ…。
multilib は GCC (Gnu Compiler Collection) の各コンパイラに対応したものが存在するので、C++ 開発をしたければ追加で g++-multilib をインストールする必要がありますし、Fortran なら gfortran-multilib をインストールすることになるでしょう。
で、コンパイル/リンクする時は -m32 オプションを付けます。
$ gcc -m32 -o hello32 hello.c
他のライブラリに依存した開発をする場合は対応した 32bit 版のパッケージをインストールする必要があるはずですが、今回自分はそこまでは必要なかったので調べていません。
no comment untill now