Ninjaをソースからビルドする方法についての説明となります。
経緯
本稿執筆段階(2022/07/28)時点で、RHEL9向けのninjaのrpmが配布されていなかった(もしくは見つける事が出来なかった)ため、ソースからのビルドを行うこととした。この項はその作業の備忘録となる。
2022/07/28:追記
Red Hat CodeReady Linux Builderの方にパッケージがあるとのご指摘をいただきました。
次のコマンドでCRBリポジトリを有効化をすると、dnfからninja‐buildのインストールが可能です。
[user@localhost user]# sudo subscription-manager repos --enable codeready-builder-for-rhel-9-x86_64-rpms
Ninjaとは
Ninjaは、高速な動作を重視した小さなビルドシステムである。より高レベルなビルドシステムによってビルドファイルを生成するように設計されている点と、可能な限りビルドを高速に行うように設計されている点が他のビルドシステムと大きく異なる点である。
つまり、メークを行う際に使うツールでCMake等から呼び出し、高速なメークファイル(build.ninja)の生成を行うために使われます。
環境について
本稿を記載の為に使用した環境は以下となります。
・OS:RHEL9.0(Hyper-V上の仮想マシン)
・gcc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
・cmake version 3.20.2
・ninjaのソースコード 1.11.0(2022/07/28時点のものを使用)
ユーザはuserという名称を使用、作業ディレクトリは/home/user/workとしています。これについては各環境に合わせて読み替えてください。
ビルドの方法
1. ソースを取得する。
NinjaのGitリポジトリのクローンを行う。
[user@localhost work]$ git clone https://github.com/ninja-build/ninja.git
Cloning into 'ninja'...
remote: Enumerating objects: 11813, done.
remote: Counting objects: 100% (2/2), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 11813 (delta 0), reused 1 (delta 0), pack-reused 11811
Receiving objects: 100% (11813/11813), 4.34 MiB | 6.64 MiB/s, done.
Resolving deltas: 100% (8354/8354), done.
[user@localhost work]$
2. ビルドを行う
CMakeにより、ビルドを実行する。
[user@localhost work]$ cd ./ninja
[user@localhost ninja]$ cmake -Bbuild-cmake
[user@localhost ninja]$ cmake --build build-cmake
[ 1%] Building CXX object CMakeFiles/libninja-re2c.dir/src/depfile_parser.cc.o
[ 3%] Building CXX object CMakeFiles/libninja-re2c.dir/src/lexer.cc.o
[ 3%] Built target libninja-re2c
:
:
[ 98%] Building CXX object CMakeFiles/depfile_parser_perftest.dir/src/depfile_parser_perftest.cc.o
[100%] Linking CXX executable depfile_parser_perftest
[100%] Built target depfile_parser_perftest
[user@localhost ninja]$
3. インストールを行う
CMakeにより、インストールを実行する。
[user@localhost ninja]$ cmake --install ./build-cmake/
-- Install configuration: ""
-- Installing: /usr/local/bin/ninja
[user@localhost ninja]$
※rootの権限がないとエラーが出る可能性があります。その場合、sudoで実行する等してください。
4. インストール結果の確認
コマンドを実行してみる。
正しくインストールされていればコマンドが正常に実行され、バージョンが表示される。
[user@localhost ninja]$ ninja --version
1.11.0.git
[user@localhost ninja]$