57

64ビットシステムを使用していますが、32ビットバイナリのセットが必要です。32ビット/x86のmakefileを生成するには、configureスクリプトにどのオプションを渡す必要がありますか?

4

5 に答える 5

73

次の引数を渡してスクリプトを構成すると、64ビットLinuxで32ビットライブラリを構築できました。

./configure --build=i686-pc-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32
于 2010-07-25T04:46:31.060 に答える
52

ジャックの答えは不完全です。

32ビットコンパイルにはコンパイラ/libcのサポートが必要です。gcc-multilibUbuntuのような一部のディストリビューションでは、パッケージをインストールするか、次のようにする必要があります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

于 2013-07-19T14:03:23.887 に答える
8

代わりにカスタムコンパイラを設定することで、より良い成功を収めました。このようにして、カスタムCFLAGSを使用するテストも含め、すべての構成テストが正しく機能しました。

./configure CC="gcc -m32" CXX="g++ -m32"

もちろん、アプリケーションが使用するすべてのライブラリの32ビットバージョンが必要なので、不足しているライブラリに関するエラーはすべて32ビットライブラリを参照しています。

于 2015-02-20T22:52:06.103 に答える
4

gcc / g ++を想定:

CPPFLAGS=-m32 ./configure ...
于 2010-07-16T04:33:24.000 に答える
1

上記の方法の代替方法は、(必要に応じて)専用の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
于 2015-07-11T16:07:04.240 に答える