しかし、彼らは同様の指示をしました
cd downloaded_program
./configure
make install
これにより、必要なELFといくつかの.soファイルが生成されます。
Windowsアプリのようにダウンロードできるようにzipファイルに入れるのはどうですか?ユーザーがそれをコンパイルする必要がある理由はありますか?
答え1
要因を分析してみましょう..
分析する:
プラットフォームの依存関係によって異なります:開発者がアプリケーションの複数のアーキテクチャ固有のバリエーションを作成して維持する環境では、いくつかの問題が発生します。
さまざまなバリエーションにはさまざまなソースコードが必要です。さまざまなUNIXベースのオペレーティングシステムは、同じ操作を実行するためにさまざまな機能を使用できます(例:strchr(3)とindex(3))。同様に、さまざまなバリアントにさまざまなヘッダーファイルを含める必要があります(例:string.hとstrings.h)。
さまざまなバリエーションにはさまざまなビルドプロセスが必要です。これはプラットフォームによって異なります。違いには、コンパイラの場所、コンパイラオプション、ライブラリなどの詳細を含めることができます。
さまざまなバリアントのビルドは別々に維持する必要があります。ソースツリーは1つだけなので、あるアーキテクチャのターゲットモジュールと実行可能ファイルが他のアーキテクチャのものと混同しないように注意する必要があります。たとえば、リンクエディタはSunOS-4用に構築されたオブジェクトモジュールを使用してIRIX-5実行可能ファイルを作成しようとしないでください。
各オペレーティングシステムには独自のリンク管理スキームがあり、必要に応じてExecutable and Linkable Format(ELF)ファイルを準備する必要があります。
コンパイラは一連のビルドを生成します。指示する、異なるアーキテクチャは、異なる命令セットを意味します(命令セットアーキテクチャの比較)。したがって、コンパイラの出力はアーキテクチャによって異なります(例:x86、x86-64、ARM、ARM64、IBM Power ISA、PowerPC、Motorola's 6800、MOS T 6502、および他にもたくさんあります)
安全:
- バイナリをダウンロードすると、それが言うように動作するかどうかはわかりませんが、ソースコードを監査し、システムで独自のコンパイルされたバイナリを試すことができます。それにもかかわらず、ユーザーは技術マガジン彼は自分の意見でコードを監査するためには、セキュリティ保証ではなく、コードを評価するための知識豊富で有能なコーダーが必要であることをよく指摘しました。
市場:この部分には様々な要因がありますが、修復してみましょう。
すべての会社がすべてのプラットフォームを包括することを目指すわけではなく、市場やプラットフォームの人気、販売しようとする製品によって異なります。
フリーソフトウェアの精神は、ソフトウェアをできるだけ広く使用できるようにすることです。ただし、これはソフトウェアがすべてのプラットフォームに合わせて設計されているわけではなく、それをサポートするコミュニティによって異なります。
結論として:
すべてのソフトウェアがすべてのプラットフォームに合わせて設計されているわけではありません。すべてのアーキテクチャとプラットフォームにバイナリを提供するということは、すべてのプラットフォームに対してバイナリをコンパイル、テスト、維持することを意味します。これは、より多くの作業が必要で、時にはコストがかかりすぎるため、ユーザーが自分のプラットフォームでコンパイルする場合に回避できます。さらに、ユーザーは自分が何をしているのかを知ります。
答え2
*nixとその両方は、あまりにも多くのプラットフォームとソフトウェア環境を持っています。その他、ソフトウェアはその上で実行できるため、アプリケーション(またはアプリケーションで使用するライブラリ)を構築できるようにすることが、「良い」ソフトウェアプロジェクトの数だけ、これらのコンポーネントの組み合わせをサポートできる唯一の現実的な方法です。もちろん、GPLなどのライセンスにはソースコードが必要です。利用可能- したがって、ソフトウェアが動作していなくても、一般的にユーザーには可能です。 (問題が何であるか、解決策を理解するのは難しいかもしれませんが)または任意の第三者作成者がそれを行うことができない、存在しなくなった、または存在しなくなった場合でも、入力して修正してください。
ソフトウェアをソースコードとして配布すると、独立して検証済みソフトウェアは主張するように実行し、不快な作業を代わりにまたは同じように実行します。クリエイターの信頼レベルは低くなりますが、実際には改善されます!
答え3
まず、あなたの質問は欠陥のある前提に基づいています。プログラムはいコンパイルされた形式で配布されます!
Ubuntuにソフトウェアをインストールする一般的な方法は、他のほとんどのLinuxディストリビューションと同様にパッケージをインストールすることであり、ほとんどのUnixバリアントでより一般的に使用されます。 Ubuntuでは、ソフトウェアセンターやその他のパッケージマネージャを開き、利用可能なソフトウェアを探します。パッケージのインストールを選択すると、バイナリ(パッケージにプログラムが含まれている場合)がコンピュータにダウンロードされインストールされます。
デフォルトでは、パッケージマネージャはディストリビューションマネージャによって作成されたパッケージを提供します。 Ubuntuが提供するサードパーティのパッケージソースもあります。アンフェタミン第三者がパッケージを提供する標準化された方法として使用されます。
作成者からコンパイルされたソフトウェアをダウンロードすることは最後の手段です。ソフトウェアがパッケージ化されるほど一般的でない場合、またはまだパッケージ化されていない最新バージョンが絶対に必要な場合にのみ、これを実行できます。ほとんどの人はこれを行う必要はありません。
ソフトウェアがパッケージ化されていない状態で配布される場合、通常はバイナリ形式ではなくソースコード形式で配布されます。これはLinuxの世界ではかなり頻繁に発生しますが、Windowsの世界ではほとんど発生しません。その理由は2つあります。 1つの理由は、Linuxのオープンソースプログラムの割合がはるかに高いためです。明らかに、プログラムのソースコードが利用できない場合、唯一の配布はバイナリファイルです。もう一つの理由は、Linuxの世界がより多様であるということです。互換性のない各ライブラリバージョンセットには異なるバイナリが必要です。これは通常、各配布バージョンごとに異なるバイナリを意味します。 Windowsは、各パッケージの作成者が自分のプログラムで使用するライブラリを配布することで、この問題を「解決」します(結果:コンピュータは、それを使用する各プログラムに1つずつ、各ライブラリの多数のコピーを保存します)。変更すると、すべてのプログラムはこのライブラリを使用するためにアップデートをリリースする必要があります)、オペレーティングシステムの新しいバージョンは3年ごとにリリースされます。 Unix は、より多様でタイムリーなバグ修正の習慣を持っており、さまざまなディストリビューション用にさまざまなバイナリを構築して、ライブラリのデプロイの問題を解決します。
答え4
もちろん、ソースとして配布する元の理由はプラットフォームの多様性でした。 Linuxコミュニティは、この理由と新しい(部分的には政治的な)理由でこのアプローチを採用し続けています。
たとえば、Windowsとは異なり、Linuxは長期間にわたってアプリケーションバイナリインタフェース(ABI)を安定的に維持しようとしました。したがって、実行可能形式、ライブラリAPI、および新しいハードウェアプラットフォームのサポートなど、領域の革新性が制限されます。それについて詳しく説明します。重要。
商用オペレーティングシステムは、厳しい革新によって長期的なアプリケーション互換性を達成します。新機能/ソフトウェアインターフェースは、常に前の機能の上に追加する必要があります。 2つを維持し、リリース後の変更コストが非常に高いことを考慮する必要があります。 。あるいは、オペレーティングシステム用のソフトウェアを作成する人と協力して、計画されたアプリケーションが使用されなくなったことを受け入れることができます。これは、Microsoftではなく他のオペレーティングシステムベンダーを意味します。
Linuxコミュニティの一部のメンバーは、バイナリ形式(特定のLinuxディストリビューションの外側)でのみ配布されるソフトウェアに対して長期的に安定したプラットフォームを実装することは望ましくないと思います。両方のプラットフォームを使用しているユーザーとして、私はこれが悪いと言うことではありません。