タイトルは実際には、それをすべて言います。しかし、私は質問を指定することができます:
私はlibffiを使用するアプリケーション、libGL、DLFCN、およびSDLをコンパイルしたと仮定すると、
など?、同じアーキテクチャで他のLinuxディストリビューションでは、バイナリの実行を言っただろう
私が尋ねる理由は、ディレクトリのは/ usr / libに/ I386-のlinux-gnuの
のです - 私が間違っているかもしれないが、私はありません。
だから、どのようにポータブルバイナリは本当にUbuntuの上でコンパイルされますか?
承認された回答:
あなたがバイナリをコンパイルすると、言うの nginxの
の ソースコードから、それはライブラリのバージョンはバイナリをコンパイルされているシステムにあるかに関する情報で構築されています。当然の基準にライブラリー(引数によって決定されるため、 nginxのコード> 、それはあなたが)有効かどうたいどのモジュールの定義です。しかし、あなたは別のシステムになります(そう)の実行を内蔵しているバイナリ、その同じように構成されたシステムでない限り。
あなたは、その(比較的)そう、あなたが別のシステムにコンパイルされたバージョンのポートにできるようになり、個々のシステム上のアプリケーションをコンパイルすることになるでしょうそのののかもしれません 各ライブラリの互換性のあるバージョンを持っていません。
の注意:あなたが にすることができますが 、別のLinuxシステムへのポートへのバイナリを取得し、その無分別、通常は時間がかかります。あなたは必ずあなたがあなたのバイナリを移動しようとしているシステムは、のlibc
は、同じバージョンを使用して作成する必要があり
(1):これは、 あなたは確かプログラム内で使用されるライブラリがシステム上で容易に検出することが可能であることを確認する必要があり、それらが同じ(または互換性)であることを(2)/>
の
の...と考慮すべきもちろん他の変数の。それは、移植性のために努力しようではなく、それを使用する各システム上でプログラムをコンパイルするために長期的にだけで簡単です。の