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
とは言え、ある程度の所までは上手く行ったので、参考までに自分の手順を書き残しておきます。
- コマンドを入力するために、ターミナルを起動する。
- Xcodeをインストールする。
- xcode-select --install
- Homebrewをインストールする。
- /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 依存バイナリをインストールする。
- brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent qrencode
- brew install librsvg
- brew install doxygen
- これは公式の手順書にはないが、後続のconfigureをした時に「configure: WARNING: Doxygen not found」という警告メッセージが出力されたため。
- brew install zmq
- こちらも公式の手順書にはないが、後続のconfigureをした時に「configure: WARNING: libzmq version 4.x or greater not found, disabling」という警告メッセージが出力されたため。
- brew install gettext
- これも公式の手順書にはないが、後続のconfigureをした時に「configure: WARNING: "xgettext is required to update qt translations"」という警告メッセージが出力されたため。
- Bitcoinコアのソースコードをダウンロードする。
- Berkeley DB 4.8 をインストールする。
- ./contrib/install_db4.sh .
- ファイルを自動生成する。
- ./autogen.sh
- MakeFileを作成する。
- ./configure
- アプリをビルドする。
- make
- 自分の環境だと約20分かかった。そして所々で警告メッセージが出力されていた。
- make
- アプリをテストする。
- make check
- しかし後述の通り、psbt_wallet_tests.cppというテストファイルでエラーが起きて失敗した。
- make check
- アプリをインストールする。
- make deploy
- インストール自体はできたけど、アプリは起動できず。
- 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
C++のソースコードはちゃんと読んでいないけど、そもそもmakeした時に結構な数の警告ログが出力されていたので、ソースコードがまだ macOS Mojave 10.14.3 に対応できていないんだと思います。