64ビットDebianで32ビットソフトウェアをどのようにビルドして実行しますか? [コピー]

64ビットDebianで32ビットソフトウェアをどのようにビルドして実行しますか? [コピー]

私は独自の32ビットライブラリを必要とし、64ビットDebian(jessie、amd64)で実行する必要があるC ++プログラムを開発しようとしています。 32ビットライブラリを使用するには、32ビット実行可能ファイルを作成する必要があるとします(または64ビット実行可能ファイルでライブラリを使用する方法はありますか?)

64ビットDebianでプログラムをどのように構築しますか?または、32ビットDebianシステムを使用してビルドしてから64ビットDebianに移動する必要がありますか?

私は通常cmakeを使用していますが、違いがあればそうです。

答え1

はい、32ビットライブラリを使用するには32ビットバイナリを作成する必要があります。

amd64のDebian 8では、以下を使用して32ビットバイナリを構築できます。gcc-multilib(Cの場合)またはg++-multilib(C++ の場合) および GCC-m32オプション。

CMakeを使用すると、フラグを追加するだけで十分だと思います-m32。単一のプロジェクトで32ビットビルドと64ビットビルド用のCMakeを設定できますが、これは非常に複雑です。rr~のCMakeLists.txt詳細な例

到着走る32ビットバイナリの場合は、i386のマルチアーキテクチャサポートを有効にする必要があります。

sudo dpkg --add-architecture i386
sudo apt-get update

libc6:i386次に、で始めて適切なライブラリをインストールしますlibstdc++6:i386

関連情報