64ビットシステムを使用していますが、32ビットバイナリのセットが必要です。32ビット/x86のmakefileを生成するには、configureスクリプトにどのオプションを渡す必要がありますか?
5 に答える
次の引数を渡してスクリプトを構成すると、64ビットLinuxで32ビットライブラリを構築できました。
./configure --build=i686-pc-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32
ジャックの答えは不完全です。
32ビットコンパイルにはコンパイラ/libcのサポートが必要です。gcc-multilib
Ubuntuのような一部のディストリビューションでは、パッケージをインストールするか、次のようにする必要がありますg++-multilib
。
sudo apt-get install gcc-multilib g++-multilib
次に、前述のようにconfigureを呼び出し、32ビットホストを指定して32ビットコンパイルフラグを渡すことができます。
./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
multilibがインストールされていない場合、フラグconfigure: error: C compiler cannot create executables
を渡すときのようなエラーが発生します。-m32
代わりにカスタムコンパイラを設定することで、より良い成功を収めました。このようにして、カスタムCFLAGSを使用するテストも含め、すべての構成テストが正しく機能しました。
./configure CC="gcc -m32" CXX="g++ -m32"
もちろん、アプリケーションが使用するすべてのライブラリの32ビットバージョンが必要なので、不足しているライブラリに関するエラーはすべて32ビットライブラリを参照しています。
gcc / g ++を想定:
CPPFLAGS=-m32 ./configure ...
上記の方法の代替方法は、(必要に応じて)専用のx86コンパイラを使用することです。構成行は次のようになります(パターン「<toolname> -x86」にちなんでx86-toolsという名前を付けました)。
CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure