2013-07-12 10 views
6

私は、32ビットと64ビットの両方のアーキテクチャ用にコンパイルする必要のあるLinuxアプリケーションのビルドマシンをセットアップする方法をアドバイスしています。32および64ビットアプリケーション(C++)をビルドするためのLinux環境

私が知る限り、32ビットと64ビットの両方を構築できる64ビットOSが必要です。-32ビットのフラグを追加すると、32ビットの正しい出力が得られます。

主な問題はライブラリです。私はどのように進むべきかはわかりません...リンカーがldl、lz、lrtなどの単純なライブラリの32ビット版を使用していることを確認するにはどうすればよいですか?私はそれらのすべての32ビット版をインストールして、リンカーパスを設定する必要があることを理解しています。

もう1つの問題は、コンパイラ、リンカ、libcなどのバージョンです。すべてのクライアントが問題なく実行できるように、私は最も古いバージョンを使用する必要がありますか?私は、最新のDebianでこのアプリを構築すると、古いDebianでは正常に動作しないことを意味します。

ありがとうございました!

+4

異なるアーキテクチャーの仮想マシンを持つだけでは、混乱が起こりにくいかもしれません。また、64ビットLinuxに32ビットのchrootを組み込み、chrootの中から32ビット版をビルドすることもできます。私は確信していません。 –

+0

ありがとう!私はいくつかのVMを設定するこの代替案を検討しています。 –

答えて

2

64ビットビルドのLinuxのほとんどのバージョンも32ビットビルドを行い、ほぼすべてのライブラリを両方のライブラリで使用できるため、関連する32ビットライブラリを64ビットビルドと並行してインストールするだけですビットのもの。ほとんどの場合、パスの設定は純粋な64ビットまたは32ビットビルドと変わりありません。いくつかのライブラリに問題があるかもしれませんが、本当にそれらを探しに行く必要があります。メインストリームのパケットはすべて、同時にインストールされた32ビットと64ビットのライブラリバージョンで動作するライブラリを持ちます。

"which libc"などに関しては、これはもっと難しい質問です。実際にお客様のマシンにあるものに依存するため、Debianのいずれかを使用する必要があるとは言えません、RedHatまたはSuSE - 彼らは使用しているものを使用することについて非常に強く感じます。 「古すぎる」ライブラリを使用することは、「あまりにも新しい」ライブラリを使用することと同じくらい悪いことです。これに対する通常の解決策は、複数のバージョンをビルドすることです.1つはRedHatの特定のリリース用です(より新しい/古いバージョン、通常は同じ範囲のFedoraバージョンで動作します)、Debianバージョン、 SuSE版、おそらく1つまたは2つ以上のディストリビューション。

はい、その時点で、3台、5台、または12台の物理マシンを持つ必要がないように、数台の仮想マシンを持つビルドマシンをセットアップすることをお勧めします。

+0

本当に助けていただきありがとうございます。 –

関連する問題