Skip to content

1-3. xrpldをビルドする

This content is not available in your language yet.

ソースコードが用意できたら、実際にビルドしてみましょう。xrpldはCMakeとConanを使ったビルドシステムを採用しています。

flowchart TD
  s1["1. Conan で依存ライブラリを取得・ビルド"]
  s2["2. CMake でビルド設定を生成"]
  s3["3. cmake --build でコンパイル・リンク"]
  s4["4. 実行ファイル: .build/xrpld"]
  s1 --> s2 --> s3 --> s4

ステップ 1: ビルドディレクトリを作成

Section titled “ステップ 1: ビルドディレクトリを作成”

xrpld-test のルートディレクトリで実行します:

Terminal window
# xrpld-test/ で実行
mkdir .build
cd .build
# 以降はすべて xrpld-test/.build/ 内で実行

ステップ 2: 依存ライブラリの取得

Section titled “ステップ 2: 依存ライブラリの取得”

.. はルートの conanfile.py を指します(.build/ の一つ上)。

Terminal window
# xrpld-test/.build/ で実行
conan install .. --output-folder . --build missing \
--settings build_type=Release
conan install .. --output-folder . --build missing \
--settings build_type=Debug

完了すると .build/build/generators/conan_toolchain.cmake が生成されます。

.. はルートの CMakeLists.txt を指します(.build/ の一つ上)。

Terminal window
# xrpld-test/.build/ で実行
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
-DCMAKE_BUILD_TYPE=Debug \
-Dxrpld=ON \
-Dtests=ON \
..
オプション説明
-DCMAKE_TOOLCHAIN_FILEステップ2で生成されたツールチェーンファイル
-DCMAKE_BUILD_TYPEDebug または Release
-Dxrpld=ONxrpldデーモンをビルドする
-Dtests=ONテストをビルドする

成功すると以下のような出力が出ます:

-- The CXX compiler identification is Clang 16.0.0
...
-- Build files have been written to: /path/to/xrpld-test/.build

. は現在いる .build/ ディレクトリを指します。

Terminal window
# xrpld-test/.build/ で実行
cmake --build . --parallel

ビルド完了まで20〜60分程度かかります。以下のような出力で完了です:

[100%] Linking CXX executable xrpld

実行ファイルは .build/ 内に生成されます。

Terminal window
# xrpld-test/.build/ で実行
./xrpld --version

以下のような出力が出ればビルド成功です:

xrpld version 3.2.0-rc2+...
Git commit hash: 47365f42203c53b723b3d209d8bcd760bf0c4822
Git build branch: develop
Terminal window
./xrpld --unittest --unittest-jobs 4

数分後に Passed X test cases と表示されれば正常です。

ERROR: Package 'boost/...' can't be built with the current configuration

解決策: Conanプロファイルの compiler.cppstd20 に設定してください(1-2. 環境構築参照)。

メモリ不足でビルドが中断される

Section titled “メモリ不足でビルドが中断される”
c++: fatal error: Killed signal terminated program cc1plus

解決策: 並列数を制限してください。

Terminal window
cmake --build . --parallel 2
CMake 3.22 or higher is required.

解決策: CMakeを更新してください。

Terminal window
# macOS
brew upgrade cmake
# Ubuntu
pip3 install cmake --upgrade
Error: could not load cache

原因: ステップ 3 の cmake ... ..(設定フェーズ)を実行していない状態で cmake --build を実行するとこのエラーが出ます。

解決策: ステップ 3 の cmake 設定を先に実行してください。

Terminal window
# xrpld-test/.build/ で実行
cmake -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
-DCMAKE_BUILD_TYPE=Debug \
-Dxrpld=ON \
-Dtests=ON \
..

設定が完了すると .build/CMakeCache.txt が生成されます。その後に cmake --build . --parallel を実行してください。

build/generators/conan_toolchain.cmake が見つからない

Section titled “build/generators/conan_toolchain.cmake が見つからない”

解決策: ステップ 2 の conan install が正常に完了しているか確認します。

Terminal window
ls build/generators/
# conan_toolchain.cmake が存在するはず

xrpldのビルドが成功しました。次はローカルネットワークを起動して動作を確認します。