building catapult-server from source
という記事があったので、ラズベリーパイでコンパイルできるか試してみる。
本家のマニュアル
https://github.com/nemtech/catapult-server/blob/main/docs/BUILD-manual.md
環境(Raspberry Pi 4 4G Model B)
sudo apt update sudo apt -y upgrade sudo apt -y install gcc clang cmake libssl-dev ninja-build zsh pkg-config build-essential zsh
$ sudo chsh -s $(which zsh)
exit
echo $SHELL
$ vi ~/.zshrc
Step1 download all dependencies from source
function download_boost { local boost_ver=1_${1}_0 local boost_ver_dotted=1.${1}.0 curl -o boost_${boost_ver}.tar.gz -SL https://dl.bintray.com/boostorg/release/${boost_ver_dotted}/source/boost_${boost_ver}.tar.gz tar -xzf boost_${boost_ver}.tar.gz mv boost_${boost_ver} boost } function download_git_dependency { git clone git://github.com/${1}/${2}.git cd ${2} git checkout ${3} cd .. } function download_all { download_boost 74 download_git_dependency google googletest release-1.10.0 download_git_dependency google benchmark v1.5.2 download_git_dependency mongodb mongo-c-driver 1.17.2 download_git_dependency mongodb mongo-cxx-driver r3.6.1 download_git_dependency zeromq libzmq v4.3.3 download_git_dependency zeromq cppzmq v4.7.1 download_git_dependency facebook rocksdb v6.13.3 }
cd ${CAT_DEPS_DIR} mkdir source cd source download_all
Step 2 - Install all dependencies
function install_boost { cd boost ./bootstrap.sh with-toolset=clang --prefix=${boost_output_dir} b2_options=() b2_options+=(--prefix=${boost_output_dir}) ./b2 ${b2_options[@]} -j 8 stage release ./b2 install ${b2_options[@]} } function install_git_dependency { cd ${2} mkdir _build cd _build cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="${CAT_DEPS_DIR}/${1}" ${cmake_options[@]} .. make -j 8 && make install } function install_google_test { cmake_options=() cmake_options+=(-DCMAKE_POSITION_INDEPENDENT_CODE=ON) install_git_dependency google googletest } function install_google_benchmark { cmake_options=() cmake_options+=(-DBENCHMARK_ENABLE_GTEST_TESTS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON) install_git_dependency google benchmark } function install_mongo_c_driver { cmake_options=() cmake_options+=(-DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF) cmake_options+=(-DENABLE_MONGODB_AWS_AUTH=OFF) cmake_options+=(-DENABLE_TESTS=OFF) cmake_options+=(-DENABLE_EXAMPLES=OFF) cmake_options+=(-DENABLE_SASL=OFF) install_git_dependency mongodb mongo-c-driver } function install_mongo_cxx_driver { cmake_options=() cmake_options+=(-DBOOST_ROOT=${boost_output_dir}) cmake_options+=(-DCMAKE_CXX_STANDARD=17) install_git_dependency mongodb mongo-cxx-driver } function install_zmq_lib { cmake_options=() cmake_options+=(-DWITH_TLS=OFF) install_git_dependency zeromq libzmq } function install_zmq_cpp { cmake_options=() cmake_options+=(-DCPPZMQ_BUILD_TESTS=OFF) install_git_dependency zeromq cppzmq } function install_rocks { cmake_options=() cmake_options+=(-DPORTABLE=1) cmake_options+=(-DWITH_TESTS=OFF) cmake_options+=(-DWITH_TOOLS=OFF) cmake_options+=(-DWITH_BENCHMARK_TOOLS=OFF) cmake_options+=(-DWITH_CORE_TOOLS=OFF) cmake_options+=(-DWITH_GFLAGS=OFF) install_git_dependency facebook rocksdb } function install_all { declare -a installers=( install_boost install_google_test install_google_benchmark install_mongo_c_driver install_mongo_cxx_driver install_zmq_lib install_zmq_cpp install_rocks ) for install in "${installers[@]}" do pushd source > /dev/null ${install} popd > /dev/null done } cd ${CAT_DEPS_DIR} install_all
Step 3 - Finally, download and build catapult
cd git clone https://github.com/nemtech/catapult-server.git cd catapult-server mkdir _build && cd _build cmake BOOST_ROOT="${CAT_DEPS_DIR}/boost" cmake .. \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_PREFIX_PATH="${CAT_DEPS_DIR}/facebook;${CAT_DEPS_DIR}/google;${CAT_DEPS_DIR}/mongodb;${CAT_DEPS_DIR}/zeromq" \ \ -GNinja -DBoost_INCLUDE_DIR=${CAT_DEPS_DIR}/boost/include ninja publish ninja -j4
Comments