RealPath:
WebPath:
2017/01/22 01:28 (JST) 更新
インストール >>

Windowsビルド

Contents

基本的に https://github.com/bitcoin/bitcoin/blob/master/doc/build-windows.md の手順に従っておけば良い。

あらかじめ Bash on Ubuntu on Windows を導入しておき、コマンドプロンプトから bash を起動する

dos
> bash

ビルド・インストール

Bash on Ubuntu on Windows 環境下で以下手順によりビルド・インストールを行う。

ソースコード取得

bash on ubuntu on windows
$ sudo su -
# git clone https://github.com/bitcoin/bitcoin.git
# cd bitcoin

依存モジュールのビルド

bash on ubuntu on windows
# apt-get install g++-mingw-w64-x86-64 mingw-w64-x86-64-dev

# cd depends
# make HOST=x86_64-w64-mingw32

configure生成

bash on ubuntu on windows
# cd ..
# ./autogen.sh

configure実行

prefix には適当なインストール場所を指定する。今回は Windows 側から C:\bitcoin-module として参照できるように /mnt/c/bitcoin-module を指定することにする。

bash on ubuntu on windows
# CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site ./configure --prefix=/mnt/c/bitcoin-module --enable-debug
....
Options used to compile and link:
  with wallet   = yes
  with gui / qt = yes
    qt version  = 5
    with qr     = yes
  with zmq      = yes
  with test     = yes
  with bench    = yes
  with upnp     = yes
  debug enabled = yes

  target os     = windows
  build os      =

  CC            = /mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../native/bin/ccache x86_64-w64-mingw32-gcc
  CFLAGS        = -pipe -O2  -g3 -O0
  CPPFLAGS      = -I/mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../include/  -DDEBUG -DDEBUG_LOCKORDER -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -D_FILE_OFFSET_BITS=64
  CXX           = /mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../native/bin/ccache x86_64-w64-mingw32-g++ -std=c++11
  CXXFLAGS      = -pipe -O2  -g3 -O0
  LDFLAGS       = -L/mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../lib

ビルド

bash on ubuntu on windows
# make V=1  ※ここで「File too big」エラーが出る場合は後述に従い CFLAGS, CXXFLAGS を書き換える

インストール

bash on ubuntu on windows
# make install

処理が成功すると configure 時に prefix で指定したディレクトリに対して成果物が出力される。

img--300--size

大体以下のような構成になっているはず。

/mnt/c/bitcoin-module/
  bin/
    bench_bitcoin.exe
    bitcoin-cli.exe
    bitcoin-qt.exe
    bitcoin-tx.exe
    bitcoind.exe
    libbitcoinconsensus-0.dll
    test_bitcoin-qt.exe
    test_bitcoin.exe
  include/
    bitcoinconsensus.h
  lib/
    libbitcoinconsensus.a
    libbitcoinconsensus.dll.a
    libbitcoinconsensus.la
    pkgconfig/libbitcoinconsensus.pc
  share/
    man/man1/bitcoin-cli.1
    man/man1/bitcoin-qt.1
    man/man1/bitcoin-tx.1
    man/man1/bitcoind.1

実行確認・バージョン確認

Windows 側のコマンドプロンプトにて。

dos
> cd C:\bitcoin-module\bin
> bitcoind --version
Bitcoin Core Daemon version v0.13.99.0-01618b6-dirty

> bitcoin-cli --version
Bitcoin Core RPC client version v0.13.99.0-01618b6-dirty

「too many sections」「File too big」エラー

--enable-debug でビルドしていると make が以下のようなエラーで中断されることがある。

bash
# make
....
/mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../native/bin/ccache x86_64-w64-mingw32-g++ -std=c++11 -DHAVE_CONFIG_H -I. -I../src/config  -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -I. -I./obj  -mthreads -I/mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../include -I./leveldb/include -I./leveldb/helpers/memenv   -I./secp256k1/include -I./univalue/include -I/mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../include/  -DDEBUG -DDEBUG_LOCKORDER -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -D_FILE_OFFSET_BITS=64 -Wstack-protector -fstack-protector-all  -pipe -O2  -g3 -O0 -MT wallet/libbitcoin_wallet_a-wallet.o -MD -MP -MF wallet/.deps/libbitcoin_wallet_a-wallet.Tpo -c -o wallet/libbitcoin_wallet_a-wallet.o `test -f 'wallet/wallet.cpp' || echo './'`wallet/wallet.cpp
/usr/bin/x86_64-w64-mingw32-as: wallet/libbitcoin_wallet_a-wallet.o: too many sections (34599)
{standard input}: Assembler messages:
{standard input}: Fatal error: can't write wallet/libbitcoin_wallet_a-wallet.o: File too big
/usr/bin/x86_64-w64-mingw32-as: wallet/libbitcoin_wallet_a-wallet.o: too many sections (34599)
{standard input}: Fatal error: can't close wallet/libbitcoin_wallet_a-wallet.o: File too big
make[2]: *** [wallet/libbitcoin_wallet_a-wallet.o] Error 1
make[2]: Leaving directory `/mnt/c/opensource/bitcoin/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/mnt/c/opensource/bitcoin/src'
make: *** [all-recursive] Error 1
root@ULTRAYOGA:/mnt/c/opensource/bitcoin# /mnt/c/opensource/bitcoin/depends/x86_64-w64-mingw32/share/../native/bin/ccache x86_64-w64-mingw32-g++
x86_64-w64-mingw32-g++: fatal error: no input files
compilation terminated.

ググるとコンパイルオプションに「-Wa,-mbig-obj」を付けると良いという情報も見つかるが、少なくとも現時点(2017年1月)で apt-get で取得できる x86_64-w64-mingw32-g++ では「-Wa,-mbig-obj」を付けても「unrecognized option '-mbig-obj'」というエラーが出てしまう。

代わりに「-Os」オプションを付けることで問題が解消することを手元では確認した。

あまり美しくないが make の以下のような引数を付けて実行すると良い。

bash on ubuntu on windows
# make V=1 CFLAGS="-pipe -O2 -g3 -Os" CXXFLAGS="-pipe -O2 -g3 -Os"