DUICUO

誰でも、この 3 つの簡単な手順でオープンソース コードをコンパイルできます。

[[437610]]

コンパイルするためにコードの書き方や読み方を知る必要はありません。

ソフトウェアをインストールする方法は数多くありますが、オープンソースには他にはない選択肢があります。それは、自分でコードをコンパイルすることです。ソースコードをコンパイルする典型的な3つのステップは次のとおりです。

  1. $ ./ configure
  2. $ make
  3. $ sudo make install

これらのコマンドを使用すると、コードをコンパイルするためにコードの書き方や読み方さえ知る必要がないことに驚かれるかもしれません。

ソフトウェアをビルドするために使用するコマンドをインストールします。

初めてコンパイルする場合は、ソフトウェアのビルドに使用するコマンドをインストールするという、一度だけ必要なセットアップ手順があります。具体的には、コンパイラが必要です。コンパイラ(GCCやLLVMなど)は、次のようなソースコードを処理できます。

  1. # include < iostream >
  2. using namespace std ;
  3. int main () {
  4. cout << "hello world" ;
  5. }

機械語、つまりCPUが情報を処理するために使用する命令に翻訳されます。機械語を見ることはできますが、(CPUでない限り)意味を理解できません。

パッケージ マネージャーを使用して、GNU コンパイラ コレクション (GCC) と LLVM コンパイラ、および Fedora、CentOS、Mageia などのディストリビューションでコンパイルするためのその他の基本コマンドをインストールできます。

  1. $ sudo dnf install @development clang

Debian、Elementary、Mint などのディストリビューションでは、コマンドは次のようになります。

  1. $ sudo apt install build - essential clang

システムをセットアップした後、ソフトウェアをコンパイルするたびに繰り返し実行する必要があるタスクがいくつかあります。

  1. ソースコードをダウンロード
  2. ソースコードを含むアーカイブファイルを解凍する
  3. コンピレーション

必要なコマンドはすべてすでにあるので、それらをコンパイルするためのソフトウェアが必要になります。

1. ソースコードをダウンロードする

アプリケーションのソースコードの入手方法は、ダウンロード可能なソフトウェアの入手方法と同様です。GitLab、SourceForge、GitHubなどのウェブサイトやコード管理サイトにアクセスする必要があります。一般的に、オープンソースソフトウェアは継続的な開発作業("...")です。現在現在"または"毎晩毎晩「」にはビルドバージョンと「」にはパッケージバージョンがあります。安定させる安定したリリース版。発生するバグを修正できると確信できる理由がある場合、またはコードに関する十分な知識がある場合を除き、可能な限り安定版を使用してください。「安定版」という用語は、コードがテスト済みであり、アプリケーションのプログラマーが十分な自信を持って.zipまたは.tarアーカイブにパッケージ化し、公式番号、場合によってはリリース名を付けて、一般の非プログラマーがダウンロードできるようにしていることを意味します。

この演習では、オープンソース(GPLv2)のASCIIダンジョンハンターゲーム「Angband」を使用しました。Angbandはシンプルなアプリケーションですが、その複雑さは、独自のソフトウェアをコンパイルする際に考慮すべき問題を的確に示しています。

ウェブサイトからソースコードをダウンロードします。

2. ソースコード アーカイブ ファイルを解凍します。

ソースコードは通常、複数のファイルで構成されているため、アーカイブ形式で提供されます。tarball、zipファイル、7zファイル、あるいは全く異なる形式のファイルであっても、操作する前に解凍する必要があります。

  1. $ tar -- extract -- file Angband - x . y . z . tar . gz

ファイルを解凍したら、解凍したディレクトリに移動して内容を確認してください。通常、ディレクトリの最上位にREADMEファイルがあります。このファイルには、コードをコンパイルするために必要な手順が記載されています。README READMEは通常、コードの以下の重要な側面に関する情報が含まれています。

  • 言語: コードで使用されている言語 (例: C、C++、Rust、Python)。
  • 依存関係: このアプリケーションをビルドして実行するには、システムに他のソフトウェアをインストールする必要があります。
  • :このソフトウェアをビルドするために必要な具体的な手順。場合によっては、この情報はINSTALLという名前の専用ファイルに含まれていることがあります。

READMEファイルにこの情報が含まれていない場合は、開発者にバグレポートを提出することを検討してください。ソースコードの説明が必要なのはあなただけではありません。どんなに経験豊富な開発者でも、初めて見るソースコードには戸惑うものです。そのため、ドキュメントは非常に重要です。

Angbandのメンテナーは、コードのコンパイル方法を説明したオンラインガイドへのリンクを提供しています。このドキュメントでは、他にインストールが必要なソフトウェアについても説明されていますが、具体的な内容は明記されていません。ウェブサイトには、「ビルドにはいくつかのオプションのフロントエンド(GCU、SDL、SDL2、X11)があり、 --enable-sdl--disable-x11などのパラメータを使用して設定できます」と記載されています。これは意味不明に思えるかもしれませんが、コードを頻繁にコンパイルすれば慣れてきます。X11やSDL2が何であるか理解しているかどうかに関わらず、数ヶ月にわたって定期的にコードをコンパイルすれば、これらの要件をよく目にするようになります。ほとんどのソフトウェアは他の技術に基づいて構築されているため、他のソフトウェアライブラリを必要とするという考えにも慣れてくるでしょう。しかし、Angbandはこの点において非常に柔軟で、これらのオプションの依存関係の有無にかかわらずコンパイルを行うため、今のところは追加の依存関係がないと考えて構いません。

3. コードをコンパイルする

コードをビルドするための一般的な手順は次のとおりです。

  1. $ ./ configure
  2. $ make
  3. $ sudo make install

これらは、ソースコードの配布方法を標準化するために作成されたフレームワークであるAutotoolsを使用してプロジェクトをビルドするための手順です。ただし、CMakeなど、異なる手順を必要とするフレームワークもあります。プロジェクトがAutotoolsまたはCMakeフレームワークに準拠していない場合、多くの場合、 READMEファイルに警告が表示されます。

構成

Angband は Autotools を使用するので、コードをコンパイルする時が来ました。

Angband ディレクトリで、まず、ソース コードに付属する設定スクリプトを実行します。

  1. $ ./ configure

このステップでは、システムをスキャンして、Angband を正しくビルドするために必要な依存関係を検出します。依存関係の中には、コンピュータが動作しないほど基本的なものもあれば、特殊なものもあります。このプロセスが終了すると、スクリプトは検出した内容に関するレポートを表示します。

  1. [...]
  2. configure : creating ./ config . status
  3. config . status : creating mk / buildsys . mk
  4. config . status : creating mk / extra . mk
  5. config . status : creating src / autoconf . h
  6. Configuration :
  7. Install path : /usr/ local
  8. binary path : /usr/ local / games
  9. config path : /usr/ local / etc / angband /
  10. lib path : /usr/ local / share / angband /
  11. doc path : /usr/ local / share / doc / angband /
  12. var path : ( not used )
  13. ( save and score files in ~ /.angband/ Angband /)
  14. -- Frontends --
  15. - Curses Yes
  16. - X11 Yes
  17. - SDL2 Disabled
  18. - SDL Disabled
  19. - Windows Disabled
  20. - Test No
  21. - Stats No
  22. - Spoilers Yes
  23. - SDL2 sound Disabled
  24. - SDL sound Disabled

出力の中には意味のあるものもあれば、そうでないものもあります。いずれにせよ、SDL2とSDLが「無効」、TestとStatsが「なし」と表示されていることにお気づきかもしれません。これらの情報は否定的なものですが、必ずしも悪いことではありません。基本的に、これが警告エラーの違いです。構成スクリプトがコードのビルドを妨げる要因に遭遇した場合、エラーを警告します。

ビルドを少し最適化したい場合は、これらのマイナス面に対処することができます。Angbandのドキュメントを調べてみると、TestとStatsは実際には必要ないことがわかるかもしれません(これらはAngbandの開発者向けオプションです)。しかし、オンラインで調べてみると、SDL2が非常に便利な機能であることが分かるかもしれません。

コードのコンパイル中に依存関係の問題を解決するには、不足しているコンポーネントとその開発ライブラリをインストールする必要があります。言い換えると、Angbandはサウンドを再生するためにSDL2を必要としますが、ビルドにはSDL2-devel (Debianシステムではlibsdl2-dev )も必要です。パッケージマネージャーを使用して、両方のコンポーネントをインストールしてください。

  1. $ sudo dnf install sdl2 sdl2 - devel

スクリプトを再度設定してみてください:

  1. $ ./ configure -- enable - sdl2
  2. [...]
  3. Configuration :
  4. [...]
  5. - Curses Yes
  6. - X11 Yes
  7. - SDL2 Yes
  8. - SDL Disabled
  9. - Windows Disabled
  10. - Test No
  11. - Stats No
  12. - Spoilers Yes
  13. - SDL sound Disabled
  14. - SDL2 sound Yes

制作(翻訳)

すべての設定が完了したら、 makeコマンドを実行します。

  1. $ make

これには通常、しばらく時間がかかりますが、コードがコンパイルされていることがわかる視覚的なフィードバックが多数提供されます。

インストール

最後のステップは、コンパイルしたコードをインストールすることです。コードのインストールは魔法ではありません。多くのファイルを特定のディレクトリにコピーするだけです。これは、ソースコードからコンパイルする場合でも、洗練されたグラフィカルインストールウィザードを実行する場合でも同じです。このコードはシステムレベルのディレクトリにコピーされるため、 sudoコマンドによって付与されるルート(管理者)権限が必要です。

  1. $ sudo make install

アプリケーションを実行する

アプリケーションをインストールしたら、実行できます。Angbandのドキュメントによると、ゲームを起動するコマンドはangbandなので、試してみてください。

  1. $ angband

コンパイルコードリード画像

コードをコンパイルする

SlackwareデスクトップでもCentOSラップトップでも、私はほとんどのアプリケーションをNetBSDのpkgsrcシステムを使ってコンパイルしています。ソフトウェアを自分でコンパイルすることで、アプリケーションに含まれる機能、設定方法、使用するライブラリのバージョンなどについて、自分なりの考えを持つことができることに気づきました。これは非常に理にかなっています。新しいリリースに遅れずに対応できるだけでなく、コンパイル中にバグを発見することがあるので、様々なオープンソースプロジェクトに参加するのにも役立っています。

ソフトウェアをコンパイルする方法が一つだけであることは稀です。ほとんどのオープンソースプロジェクトは、ソースコード(「オープンソース」と呼ばれる理由)とインストール可能なパッケージの両方を提供しています。ソースコードからコンパイルするかどうかは、あなたの選択次第です。最新バージョンにはまだ含まれていない新機能が欲しい場合や、単に自分でコードをコンパイルするのが楽しい場合など、理由は様々です。

宿題

Angband は Autotools または CMake を使用できるので、別の方法でコードをビルドしたい場合は、これを試してみてください。

  1. $ mkdir build
  2. $ cd build
  3. $ cmake ..
  4. $ make
  5. $ sudo make install

GNUコンパイラコレクション(GCC)の代わりにLLVMコンパイラでコンパイルしてみるのも良いでしょう。さて、これは皆さんに試していただくことにします(ヒント: CC環境変数を設定してみてください)。

Angbandのソースコードと少なくともいくつかのダンジョンを探索し終えたら(休憩時間も取れましたね)、他のコードベースもチェックしてみましょう。AutotoolsやCMakeを使用しているものもあれば、異なるものを使用しているものもあります。どんなものが作れるか、ぜひ試してみてください!