"みんながHappy!になる社会を創る。"アララグループの技術者が思うところ。

こんにちは、Shellです。

先日、Bitcoinの公式ソフト、Bitcoin Coreのソースコードを「Bash on Windows 10」でコンパイルしました。Bitcoinか「Bash on Windows 10」に興味がある人の参考になればと思い、ここで共有いたします。

●Bitcoin Core: Bitcoinの公式ソフト

ソースコードはgithubにあります:
https://github.com/bitcoin/bitcoin

開発言語はC++になります。Windows版のバイナリもありますが、ビルド環境に関しては、LinuxとMac OSが良いです。Windows版のバイナリをビルドするために、Linuxのクロスコンパイル環境を使ってビルドするのは普通です。

●Bash on Windows 10: Windows 10に使えるUbuntuの環境

Windows 10から、Linuxのバイナリを実行できる環境(Windows Subsystem for Linux)が搭載されました。現時点ではまだベータ版で、使えるLinuxのイメージはUbuntu 14.04になり、ちょっとBitcoin Coreのコンパイルを試すことができます。

※Bash on Windows 10のインストール手順はここにあります:
http://qiita.com/Aruneko/items/c79810b0b015bebf30bb

※インストール先はここになります(lxssはLinux Subsystemの略):

C:\Users\[Windowsユーザ名]\AppData\Local\lxss

※rootファイルはここになります:

C:\Users\[Windowsユーザ名]\AppData\Local\lxss\rootfs

※ホームフォルダはここになります:

C:\Users\[Windowsユーザ名]\AppData\Local\lxss\home\[Windowsユーザ名]

●Bitcoin Coreのビルド手順

詳しくは、この二つのドキュメントにあります。

※Linux (Ubuntu/Debian、Fedora、Arch Linux)のビルド手順
https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md

これらのコマンドを使って、依存するライブラリ(libssl、libboost、libevent、qtなど)をインストールしました:

sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils
sudo apt-get install libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install libdb4.8-dev libdb4.8++-dev
sudo apt-get install libminiupnpc-dev
sudo apt-get install libzmq3-dev
sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
sudo apt-get install libqrencode-dev

その後は、これらのコマンドでLinuxのバイナリをビルドできます:

./autogen.sh
./configure
make

※Ubuntuのクロスコンパイル環境を使ったWindowsバイナリのビルド手順
https://github.com/bitcoin/bitcoin/blob/master/doc/build-windows.md

これらのコマンドを使って、無事Windows 10で実行できるexeファイルができました:

cd depends
 make HOST=x86_64-w64-mingw32 -j4
 cd ..
 ./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
 make

●Qt Creator(C++のIDE)を使ってソースを見る/コンパイルための設定

「Bash on Windows 10」は、名前の通り、Windows 10で使えるbashコマンドライン環境になりますので、IDEのようなGUIアプリケーションを使うためには、X Windowの設定が必要です。

試したところ、下記の手順が一番やりやすいです。

※Windowsにmobaxtermをインストールして、起動します

mobaxtermのダウンロード先はここになります:
http://mobaxterm.mobatek.net/download.html

※Bash on Windows 10のBash環境に入って、先にDISPLAYを環境変数を設定します
コマンドは下記になります:

export DISPLAY=:0.0

毎度面倒と思うなら、.bashrcに入れた方がいいです。

※Qt Creatorを起動します
コマンドは下記になります:

qtcreator

Qt Creatorを起動した後、Bitcoin Coreのソースをインポートすると、ソースコードが楽に読めます。

●問題点

上記に書いた通り、「Bash on Windows 10」を使って、Bitcoin Coreのソースコードをコンパイルできましたが、一つ大きな問題点としては、コンパイル速度が非常に遅いです。JavaやC#のような言語と比較して、C++のコンパイルは遅いだけではなく、「Bash on Windows 10」を使う場合、さらに遅くなります。原因は「Bash on Windows 10」の環境は、ファイル操作のパフォーマンスがあまり良くないです。詳しくは、ここに「Bash on Windows 10」とバイナリのUbuntuとのパフォーマンスの比較があります:

bash on windows, performance
http://www.techrepublic.com/article/windows-10-how-well-does-it-run-ubuntu-bash/

Bitcoin Coreのソースコードを分析するためだけであれば特に問題がないですが、このようなビルド速度で、本当にBitcoin Coreを開発するのであれば、かなりのストレスが溜まります。

では、今日の話は以上になります。これからBitcoin Coreのソースコードを読んでみようと思います。

comment