Posted at

64bit Linuxで32bit ELFをコンパイル

More than 3 years have passed since last update.

タイトル通り.

32bitのELFをコンパイルしたかったが,新たに32bit環境を構築するのもめんどくさいのでググった.

環境はDebian x64.


gccでできるらしい

gcc-m32オプションを付加すると,32bitのバイナリにコンパイルしてくれる.

$ gcc -m32 prog.c

In file included from /usr/include/stdio.h:27:0,
from prog.c:1:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
# include <sys/cdefs.h>
^
compilation terminated.

できないじゃん.


さらにググる

結局すぐに解決した.32bitの用のライブラリをインストールしないといけないらしい.

というわけでインストール.

$ sudo apt-get install libc6-dev-i386

インストール後,もう一度コンパイルしてみる.

$ gcc -m32 prog.c

$ ls
a.out prog.c

できた.