6

32 ビット アーキテクチャと 64 ビット アーキテクチャの両方でコンパイルする必要がある Linux アプリケーション用のビルド マシンをセットアップする方法についてアドバイスを求めています。

私の知る限り、32 と 64 の両方をビルドできる 64 ビット OS が必要です。 -m32 フラグを追加すると、32 の正しい出力が生成されます。

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

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

助けてくれてありがとう!

4

1 に答える 1

2

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

「どの libc」などとなると、顧客がマシンに何を持っているかに大きく依存するため、より難しい質問になります。また、顧客が Debian、RedHat、または SuSE のいずれかを使用する必要があると指示できる可能性は低いです。 - 彼らは自分が使っているものは何でも使うことに非常に強く感じるでしょう。「古すぎる」ライブラリを使用することは、「新しすぎる」ライブラリを使用することと同じくらい悪いことです。これに対する通常の解決策は、複数のバージョンをビルドすることです。1 つは選択された RedHat リリース用であり (通常、同じ範囲の Fedora バージョンと同様に、数ステップ新しい/古いバージョンでも動作するはずです)、Debian バージョン、およびSuSE バージョン、おそらく 1 つまたは 2 つのディストリビューション。

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

于 2013-07-12T21:12:48.143 に答える