気まぐれSE日記

地方でエンジニアしてます

64bit環境で32bit版バイナリを作成する方法 (CentOS6)

お題の件、長年の謎が解けたので備忘録がてらメモっておきます。
(お恥ずかしい話ですが、私にとっては10年間くらい謎だったのです。)


前準備

  • yum group install "Development Tools"で開発パッケージをインストールしておく。
  • yum install glibc.i686 glibc-devel.i686 など32bit版Cライブラリなど重要なパッケージをインストールしておく。
  • 作成したい32bit版のソフトウェアで必要となる32bit版のライブラリもyumでインストールしておく (例 yum install zlib-devel.i686

32bitバイナリを作成するソフトウェアのソースtarファイルを展開し、そのディレクトリへ移っておく

環境変数セット、configure、makeの順に実行

export CC="gcc -m32"
export LD="ld -melf_i386"

setarch i386 ./configure (オプションがあれば指定)
setarch i386 make
setarch i386 make install


PHP4とpostgres8.2で試したところ、成功しました。