Ubuntu amd64 で 32bit 開発

今の 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 版のパッケージをインストールする必要があるはずですが、今回自分はそこまでは必要なかったので調べていません。

Trackback

no comment untill now

Add your comment now