4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

nem / symbolAdvent Calendar 2024

Day 5

Symbol を Ubuntu 24 でビルド

Last updated at Posted at 2024-12-04

必要なパッケージをインストール

sudo apt update
sudo apt upgrade -y
sudo apt -y install git gcc g++ curl libssl-dev libgtest-dev ninja-build pkg-config cmake

Symbol のソースをクローン

現在公開されているバージョンのブランチをクローンします。保存場所はホームディレクトリを想定しています。

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

Symbol サーバーをビルド

ビルド用のディレクトリbuildを作成して中に入ります。

mkdir -p build && cd build

cmake を実行します。時間がかかるのでテストを無効にしてビルドします。ちなみに、-DENABLE_TESTS=OFFを削除すればテストもビルドします。

BOOST_ROOT="$(realpath ../deps/boost)" cmake .. \
  -DENABLE_TESTS=OFF \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_PREFIX_PATH="$(realpath ../deps/facebook);$(realpath ../deps/google);$(realpath ../deps/mongodb);$(realpath ../deps/zeromq);$(realpath ../deps/openssl)" \
  -GNinja

以下のメッセージが出ますが、警告なので無視して問題ありません。

CMake Warning (dev) at CMakeLists.txt:36 (find_package):
  Policy CMP0144 is not set: find_package uses upper-case <PACKAGENAME>_ROOT
  variables.  Run "cmake --help-policy CMP0144" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.

  Environment variable BOOST_ROOT is set to:

    /home/harvestasya/symbol/client/catapult/deps/boost

  For compatibility, find_package is ignoring the variable, but code in a
  .cmake module might still use it.
This warning is for project developers.  Use -Wno-dev to suppress it.

ビルドを開始します。

ninja publish && ninja

インストール

~/symbol/client/catapultに移動して、インストール用のスクリプトを作成します。

cd ~/symbol/client/catapult
vi symbol_install.sh
symbol_install.sh
#!/bin/bash

set -e

rm -rf /usr/local/catapult
mkdir -p /usr/local/catapult/bin
mkdir -p /usr/local/catapult/lib
mkdir -p /usr/local/catapult/deps

# bin
cp build/bin/catapult* /usr/local/catapult/bin

# lib
cp build/bin/lib* /usr/local/catapult/lib

# library
cp -r deps/boost/lib/*.so* /usr/local/catapult/deps
cp -r deps/facebook/lib/*.so* /usr/local/catapult/deps
cp -r deps/mongodb/lib/*.so* /usr/local/catapult/deps
cp -r deps/openssl/*.so* /usr/local/catapult/deps
cp -r deps/openssl/engines-3 /usr/local/catapult/deps
cp -r deps/openssl/ossl-modules /usr/local/catapult/deps
cp -r deps/zeromq/lib/*.so* /usr/local/catapult/deps

実行権限を付与して、シェルを実行します。

chmod +x symbol_install.sh
sudo ./symbol_install.sh

パスを通す

ライブラリへのパスを通します。

vi ~/.bashrc

以下を末行に追加します。

~/.bashrc
export LD_LIBRARY_PATH=/usr/local/catapult/deps
export PATH="/usr/local/catapult/bin:$PATH"

.bashrcを再読み込みします。

source ~/.bashrc

実行確認

以下のコマンドを実行してヘルプが表示されれば、ビルドは成功です。

catapult.tools.address --help

次回

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?