web-dev-qa-db-ja.com

automake configureスクリプトを使用して64ビットLinuxで32ビットをビルドしますか?

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

50
Jack Nock

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

./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
67
Jack Nock

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

32ビットコンパイルにはコンパイラ/ libcサポートが必要です。 Ubuntuのようないくつかのディストリビューションでは、パッケージgcc-multilibおよび/または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などのエラーが発生します。

47
volpato

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

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

もちろん、アプリケーションが使用するすべてのライブラリの32ビットバージョンが必要なため、ライブラリが見つからないというエラーは32ビットバージョンを参照しています。

7
Malvineous

Gcc/g ++を想定:

CPPFLAGS=-m32 ./configure ...
3

上記のことに対する別の方法は、(もしあれば)専用の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
1
Haringat