GNU/Linux >> Linux の 問題 >  >> Ubuntu

どのように移植可能なバイナリはUbuntuのではコンパイル?

タイトルは実際には、それをすべて言います。しかし、私は質問を指定することができます:

私はlibffiを使用するアプリケーション、libGL、DLFCN、およびSDLをコンパイルしたと仮定すると、

など?、同じアーキテクチャで他のLinuxディストリビューションでは、バイナリの実行を言っただろう

私が尋ねる理由は、ディレクトリのは/ usr / libに/ I386-のlinux-gnuののです - 私が間違っているかもしれないが、私はありません。

、このディレクトリは、むしろUbuntuの固有のものであると仮定します?

だから、どのようにポータブルバイナリは本当にUbuntuの上でコンパイルされますか?

承認された回答:

あなたがバイナリをコンパイルすると、言うの nginxのの ソースコードから、それはライブラリのバージョンはバイナリをコンパイルされているシステムにあるかに関する情報で構築されています。当然の基準にライブラリー(引数によって決定されるため、 nginxの 、それはあなたが)有効かどうたいどのモジュールの定義です。しかし、あなたは別のシステムになります(そう)の実行を内蔵しているバイナリ、その同じように構成されたシステムでない限り。

あなたは、その(比較的)そう、あなたが別のシステムにコンパイルされたバージョンのポートにできるようになり、個々のシステム上のアプリケーションをコンパイルすることになるでしょうそののかもしれません 各ライブラリの互換性のあるバージョンを持っていません。

の注意:あなたが にすることができますが 、別のLinuxシステムへのポートへのバイナリを取得し、その無分別、通常は時間がかかります。あなたは必ずあなたがあなたのバイナリを移動しようとしているシステムは、のlibc は、同じバージョンを使用して作成する必要があり
(1):これは、 あなたは確かプログラム内で使用されるライブラリがシステム上で容易に検出することが可能であることを確認する必要があり、それらが同じ(または互換性)であることを(2)/>

の...と考慮すべきもちろん他の変数の。それは、移植性のために努力しようではなく、それを使用する各システム上でプログラムをコンパイルするために長期的にだけで簡単です。


Ubuntu
  1. Ubuntu18.04にGradleをインストールする方法

  2. Ubuntu20.04にElasticsearchをインストールする方法

  3. Ubuntu でサービスを無効にする方法

  1. Windows10と一緒にUbuntuをインストールする方法

  2. Ubuntu18.04で自動更新を設定する方法

  3. Ubuntu16.04にOpenProjectをインストールする方法

  1. Ubuntu18.04LTSにApostropheCMSをインストールする方法

  2. Ubuntu20.04LTSを再起動する方法

  3. Ubuntu20.04にDjangoをインストールする方法