環境
Ubuntu 22.04 LTS
必要なパッケージをインストール
ビルドに必要なコンパイラ等をインストールします。
sudo apt -y install git gcc g++ curl libssl-dev libgtest-dev ninja-build pkg-config python3-pip
pip install pyyaml
CMake インストール
Ubuntu 22.04 の CMake のバージョンが古いので、新しいバージョンをインストールします。
署名鍵のコピー
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
リポジトリの追加
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
パッケージ更新&インストール
sudo apt update
sudo apt install cmake
ソースをクローン
現在メインネットで動いているバージョンを取得します。
ホームディレクトリにクローンしました。
git clone https://github.com/symbol/symbol.git -b client/catapult/v1.0.3.7
依存パッケージのビルド
Symbol サーバーをビルドするのに必要な依存パッケージをビルドするため、symbol/client/catapult
に入ります。
cd symbol/client/catapult
下記コマンドでビルドします。
ビルド中にエラー出たら解消して、再実行してください。再実行時は--download
オプション不要です。
PYTHONPATH="../../jenkins/catapult/" \
python3 "../../jenkins/catapult/installDepsLocal.py" \
--target "./deps" \
--versions "../../jenkins/catapult/versions.properties" \
--build \
--download
VSCode でビルド
拡張機能
下記の拡張機能を追加します。(たぶん、これ 1 つだけで良いはず…)
- C/C++ Extension Pack
VSCode 起動
VSCode を起動し、symbol/client/catapult
を開きます。
.vscode
ディレクトリを作成し、下記のsettings.json
とtasks.json
を作成します。settings.json
でパスを通しているので、各自環境に合わせて変更してください。
{
"cmake.environment": {
"BOOST_ROOT": "~/symbol/client/catapult/deps/boost",
},
"cmake.configureArgs": [
"-DENABLE_TESTS=OFF",
"-DCMAKE_PREFIX_PATH='~/symbol/client/catapult/deps/facebook;~/symbol/client/catapult/deps/google;~/symbol/client/catapult/deps/mongodb;~/symbol/client/catapult/deps/zeromq;~/symbol/client/catapult/deps/openssl;'",
"-GNinja"
],
"cmake.deleteBuildDirOnCleanConfigure": false,
"cmake.skipConfigureIfCachePresent": true,
}
{
"version": "2.0.0",
"tasks": [
{
"hide": true,
"type": "cmake",
"label": "CMake: 構成",
"command": "configure",
"problemMatcher": [],
"detail": "CMake テンプレート 構成 タスク"
},
{
"type": "shell",
"label": "Symbol 構成",
"command": "ninja publish",
"options": {
"cwd": "${workspaceFolder}/build"
},
"dependsOn": [
"CMake: 構成"
],
"problemMatcher": [],
"detail": "ビルド前の `ninja publish` コマンド"
}
]
}
構成
メニュー 「ターミナル->タスクの実行」 から 「Symbol 構成」を選択します。
依存パッケージのバージョンチェック等が走ります。上手くパスが通せてなかったりするとエラーが出ますので、頑張って解消してください。エラーが出てやり直す場合は、キャッシュが残ってるので build
ディレクトリ内を全て削除すること。
ビルド
VSCode のウィンドウ左下辺りに「ビルド」ボタンがあるので、それを押す。または、「ターミナル->ビルド タスクの実行...」から「CMake:ビルド」を選択でも可。
これまた時間が掛かります。
動作確認
ライブラリ移動
ライブラリがbin
ディレクトリ内にあるので、lib
ディレクトリにコピーします。
cd build
cp bin/*.so lib
パスを通す
vi ~/.bashrc
以下を末行に追加。
export LD_LIBRARY_PATH=~/symbol/client/catapult/deps/facebook/lib:~/symbol/client/catapult/deps/boost/lib:~/symbol/client/catapult/build/lib
.bashrc
を再読込。
source ~/.bashrc
実行
下記コマンドを実行してヘルプが表示されれば、ビルド成功です。
./bin/catapult.tools.address --help