量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

Macでbitcoindのソースコードをビルドしてみた。

スポンサーリンク

唐突ですが、Macでbitcoindのソースコードをビルドしてみました。
bitcoindはBitCoinプロトコルを実装したリモートプロシージャコール(RPC)用のプログラムだそうです。

最後のdはデーモン(daemon)の略でしょうね。


でも先に結論から言うと、ソースコードのビルドには失敗しました。
bitcoindのサイトにある下記の手順書に沿って作業を進めましたが、おそらく自分のmacOSはサポート外なのが原因だと思います。
github.com


手順書にはこう書かれていますが、自分のmacOSのバージョンは現時点で最新の macOS Mojave 10.14.3 ですし。

Tested on OS X 10.10 Yosemite through macOS 10.13 High Sierra on 64-bit Intel processors only.


なので、ビルドなんて面倒くさいことはせず、最初から素直にアプリをインストールした方が楽です。
Bitcoin Core :: Download - Bitcoin


とは言え、ある程度の所までは上手く行ったので、参考までに自分の手順を書き残しておきます。

  1. コマンドを入力するために、ターミナルを起動する。
  2. Xcodeをインストールする。
    1. xcode-select --install
  3. Homebrewをインストールする。
    1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  4. 依存バイナリをインストールする。
    1. brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode
    2. brew install librsvg
    3. brew install doxygen
      • これは公式の手順書にはないが、後続のconfigureをした時に「configure: WARNING: Doxygen not found」という警告メッセージが出力されたため。
    4. brew install zmq
      • こちらも公式の手順書にはないが、後続のconfigureをした時に「configure: WARNING: libzmq version 4.x or greater not found, disabling」という警告メッセージが出力されたため。
    5. brew install gettext
      • これも公式の手順書にはないが、後続のconfigureをした時に「configure: WARNING: "xgettext is required to update qt translations"」という警告メッセージが出力されたため。
  5. Bitcoinコアのソースコードをダウンロードする。
    1. mkdir -p github.com/bitcoin
    2. cd github.com/bitcoin
    3. git clone https://github.com/bitcoin/bitcoin
    4. cd bitcoin
  6. Berkeley DB 4.8 をインストールする。
    1. ./contrib/install_db4.sh .
  7. ファイルを自動生成する。
    1. ./autogen.sh
  8. MakeFileを作成する。
    1. ./configure
  9. アプリをビルドする。
    1. make
      • 自分の環境だと約20分かかった。そして所々で警告メッセージが出力されていた。
  10. アプリをテストする。
    1. make check
      • しかし後述の通り、psbt_wallet_tests.cppというテストファイルでエラーが起きて失敗した。
  11. アプリをインストールする。
    1. make deploy
      • インストール自体はできたけど、アプリは起動できず。


make check でエラーが起きた時のログは以下の通り。

Entering test module "Bitcoin Test Suite"
wallet/test/psbt_wallet_tests.cpp:18: Entering test suite "psbt_wallet_tests"
wallet/test/psbt_wallet_tests.cpp:20: Entering test case "psbt_updater_test"
unknown location:0: fatal error: in "psbt_wallet_tests/psbt_updater_test": memory access violation at address: 0x02800000: no mapping at fault address
wallet/test/psbt_wallet_tests.cpp:20: last checkpoint: "psbt_updater_test" fixture ctor
Test is aborted
wallet/test/psbt_wallet_tests.cpp:20: Leaving test case "psbt_updater_test"; testing time: 30236us
Test is aborted
wallet/test/psbt_wallet_tests.cpp:18: Leaving test suite "psbt_wallet_tests"; testing time: 30283us
Test is aborted
Leaving test module "Bitcoin Test Suite"; testing time: 30388us

1 failure is detected in the test module "Bitcoin Test Suite"

make[3]: *** [wallet/test/psbt_wallet_tests.cpp.test] Error 1
make[2]: *** [check-am] Error 2
make[1]: *** [check-recursive] Error 1
make: *** [check-recursive] Error 1

C++ソースコードはちゃんと読んでいないけど、そもそもmakeした時に結構な数の警告ログが出力されていたので、ソースコードがまだ macOS Mojave 10.14.3 に対応できていないんだと思います。