64bit Windows用のKumacoin-Qt Walletビルド方法 †
- 実績のあるビルド環境
- Windows10 Home 64bit
- バージョン 1709
- OSビルド 16299.248
いずれもインストールの際に環境変数PATHへインストールしたプログラムのフォルダを追加するようにしてください。
- MinGW環境構築
- mingw-get-inst-20120426の取得
- mingw32-gcc-4.6.2-release-c,c++,objc,objc++,fortran-sjljの取得
- 依存ライブラリのビルドへ向けての下準備
- 各ソースの取得
- 「c:\deps」フォルダを作成する
- 「c:\deps」フォルダへ「openssl-1.0.1j.tar.gz」「db-4.8.30.NC.tar.gz」「boost_1_55_0.zip」「miniupnpc-1.9.tar.gz」をコピーする
- 依存ライブラリのビルド
- openssl
- プログラム一覧から「MinGW」→「MinGW Shell」を選択してシェルを起動する
(もしくはエクスプローラーで「C:\MinGW\msys\1.0」フォルダを開き「msys.bat」を実行)
- 「deps」フォルダへ移動する
cd /c/deps
- ソースコードを展開する
tar xfz openssl-1.0.1j.tar.gz
- 「openssl-1.0.1j」フォルダへ移動する
cd openssl-1.0.1j
- Configureを実行する
Configure no-shared no-dso mingw
- ビルドする
make
- libdb
- プログラム一覧から「MinGW」→「MinGW Shell」を選択してシェルを起動する
(もしくはエクスプローラーで「C:\MinGW\msys\1.0」フォルダを開き「msys.bat」を実行)
すでに起動済みの場合は開いているシェルをそのまま使ってOK
- 「deps」フォルダへ移動する
cd /c/deps
- ソースコードを展開する
tar xfz db-4.8.30.NC.tar.gz
- 「build_unix」フォルダへ移動する
cd db-4.8.30.NC/build_unix
- Configureを実行する
../dist/configure --enable-mingw --enable-cxx --disable-replication --with-mutex=x86_64/gcc-assembly
- エクスプローラーで「C:\deps\db-4.8.30.NC\build_unix」フォルダを開く
- テキストエディタで「db.h」を開く
- 113行目にある「pthread_t」を「u_int32_t」へ書き変える
- ビルドする
make
- boost
- 「deps」フォルダにある「boost_1_55_0.zip」を展開する
(展開した結果「C:\deps\boost_1_55_0\boost_1_55_0」となってしまった場合は「C:\deps\boost_1_55_0」に修正)
- プログラム一覧からWindowsの「コマンドプロンプト」を起動する
- 「boost_1_55_0」フォルダへ移動する
cd C:\deps\boost_1_55_0\
- b2.exeを生成する
.\bootstrap.bat mingw
- ビルドする
.\b2.exe --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage
- Miniupnpc
- プログラム一覧から「MinGW」→「MinGW Shell」を選択してシェルを起動する
(もしくはエクスプローラーで「C:\MinGW\msys\1.0」フォルダを開き「msys.bat」を実行)
すでに起動済みの場合は開いているシェルをそのまま使ってOK
- 「deps」フォルダへ移動する
cd /c/deps
- ソースコードを展開する
tar xfz miniupnpc-1.9.tar.gz
- 展開された「miniupnpc-1.9」フォルダの名前を「miniupnpc」へ変更する
mv miniupnpc-1.9 miniupnpc
- 「miniupnpc」フォルダへ移動する
cd miniupnpc
- ビルドする
mingw32-make -f Makefile.mingw init upnpc-static
- QTのビルド
- 「qt」フォルダにある「qt-everywhere-opensource-src-4.8.5.zip」を展開する
(展開した結果「C:\qt\qt-everywhere-opensource-src-4.8.5\qt-everywhere-opensource-src-4.8.5」となってしまった場合は「C:\qt\qt-everywhere-opensource-src-4.8.5」に修正)
- 「c:\qt\qt-everywhere-opensource-src-4.8.5」のフォルダ名を「c:\qt\4.8.5」へ変更する
- プログラム一覧からWindowsの「コマンドプロンプト」を起動する
すでに起動済みの場合は開いているコマンドプロンプトをそのまま使ってOK
- 環境変数PATHに「c:\MinGW\bin」と「C:\MinGW\msys\1.0\bin」を追加
set PATH=%PATH%;c:\MinGW\bin;C:\MinGW\msys\1.0\bin
- 「4.8.5」フォルダへ移動する
cd C:\qt\4.8.5
- Configureを実行する
.\configure.exe -release -opensource -confirm-license -static -no-sql-sqlite -no-qt3support -no-opengl -qt-zlib -no-gif -qt-libpng -qt-libmng -no-libtiff -qt-libjpeg -no-dsp -no-vcproj -no-openssl -no-dbus -no-phonon -no-phonon-backend -no-multimedia -no-audio-backend -no-webkit -no-script -no-scripttools -no-declarative -no-declarative-debug -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -nomake demos -nomake examples
- ビルドする
mingw32-make
- kumacoin-qtビルドへ向けての下準備
- 「c:\kumacoin-build」フォルダを作成する
- kumacoin-qtのビルド
- プログラム一覧からWindowsの「コマンドプロンプト」を起動する
すでに起動済みの場合は開いているコマンドプロンプトをそのまま使ってOK
- 環境変数PATHに「c:\qt\4.8.5\bin」と「c:\MinGW\bin」と「C:\MinGW\msys\1.0\bin」を追加
set PATH=%PATH%;c:\qt\4.8.5\bin;c:\MinGW\bin;C:\MinGW\msys\1.0\bin
- 「kumacoin-build」フォルダへ移動する
cd c:\kumacoin-build
- Githubからkumacoinのソースを取得する
git clone https://github.com/kumacoinproject/kumacoin.git
- テキストエディタで「c:\kumacoin-build\kumacoin\kumacoin-qt.pro」を開いて以下を修正する
- 「kumacoin」フォルダへ移動する
cd c:\kumacoin-build\kumacoin
- qmakeを実行する
qmake "USE_UPNP=1" kumacoin-qt.pro
- ビルドする
mingw32-make -f Makefile.Release
- ビルドに成功していれば「:\kumacoin-build\kumacoin\release」フォルダに「kumacoin-qt.exe」が出来ています。
お疲れさまでした!
- トラブルシューティング
- undefined reference to `WinMain?@16'
これはmingw32で使用できない関数を用いているという意味だがmingwのバグらしい。エラー文は{APPNAME:=XXXXX.exe}となっているのでXXXXX.cを確認すると空のファイルが作成されてテストに失敗している。空のファイルを削除しmakeし直すとできます。
- 文を忘れたがautoがなんとか書いてあるエラー
C++11環境のコードが含まれているのでコンパイラに教えないといけない。そしてGNU拡張されているので「QMAKE_CXXFLAGS += -msse2」の次の行に「QMAKE_CXXFLAGS += -std=gnu++0x」を加える。
- ld.exe: cannot find -lboost_***
BoostにリンカーのPATHが通っていない。BOOST_LIB_PATHが効かないようなので通常のPATHに追加する。
- ビルド成功し起動するとスプラッシュ画面が表示されるもののError initializing database environmentと言われ、db.logにPANIC: Operation not permittedと出力されるエラー
BerkeleyDBでpthread-win32使用時に定期的に起こる問題らしい、しかしよくわからない。ソースを初めからビルドし直したらエラーが消えた。
- kumacoind.exe のビルド
- 上記依存ライブラリのビルドまで行う。(Qtのビルドは不要です)
- src/以下のmakefile.mingwを編集する
- パスとライブラリについてはビルドした現物と名前を合わせる
INCLUDEPATHS= \
-I"D:/deps/boost_1_55_0" \
-I"D:/deps/db-4.8.30.NC/build_unix" \
-I"D:/deps/openssl-1.0.1j/include"
LIBPATHS= \
-L"D:/deps/boost_1_55_0/stage/lib" \
-L"D:/deps/db-4.8.30.NC/build_unix" \
-L"D:/deps/openssl-1.0.1j"
LIBS= \
-l boost_system-mgw82-mt-s-1_55 \
-l boost_filesystem-mgw82-mt-s-1_55 \
-l boost_program_options-mgw82-mt-s-1_55 \
-l boost_thread-mgw82-mt-s-1_55 \
-l db_cxx \
-l ssl \
-l crypto
- 28行目の DEBUGFLAGS に -fpermissive を追加
DEBUGFLAGS=-g -fpermissive
- 38行目のライブラリパスの指定を以下のようにする
INCLUDEPATHS += -I"d:/deps"
LIBPATHS += -L"d:/deps/miniupnpc"
- 'OBJS= \' に以下の行を足す
obj/jh.o \
obj/keccak.o \
obj/groestl.o \
obj/skein.o \
obj/bmw.o \
obj/blake.o \
- MinGW のコンソールで src ディレクトリに移動し、mingw32-make -f makefile.mingw を実行する