很多朋友都知道如何在linux平台如何編譯比特币程式,但是,到了windows平台, 就會感覺到無從下手. 其實, 比特币程式是跨平台的. 你要編譯windows版的比特币程式,基本上有兩種方法,一種是在linux平台 (推薦ubuntu 13.10)通過交叉編譯的方法來編譯.另外一種,就是直接在windows平台編譯. 我想,你既然要在windows平台使用,我就詳細介紹一下如何在windwows平台編譯比特币程式. 我的平台:windows8.1
第一步:安裝變編譯環境QT和MINGW,msys 1、msys是一個在windows平台模拟shell的程式。 通路http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download 下載下傳安裝程式之後,通過安裝管理程式,按安裝以下内容: From MinGW installation manager -> All packages -> MSYS 選中以下安裝包
msys-base-bin msys-autoconf-bin msys-automake-bin msys-libtool-bin 點 apply changes開始安裝。他會自動下載下傳安裝好。 需要注意的是,確定不要安裝msys-gcc和msys-w32api ,因為這兩個包和我們的編譯系統發生沖突。 很多人出現一些莫名其妙的問題,就是因為這兩個包。 2、安裝 MinGW-builds 通路 http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/4.8.2/threads-posix/dwarf/i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z/download 下載下傳并解壓縮 i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z 到C槽根目錄 C:\ 注意我的目錄結構。你盡量和我一樣。
3、設定PATH環境變量,将C:\mingw32\bin;添加到第一個。 4、在指令行模式下輸入 gc -v 會得到以下内容 c:\gcc -v Using built-in specs. COLLECT_GCC=c:\mingw32\bin\gcc.exe COLLECT_LTO_WRAPPER=c:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.8.2/lto-wrapper.exe Target: i686-w64-mingw32 Configured with: ../../../src/gcc-4.8.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw482/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev3, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/lib -L/c/mingw482/prerequisites/i686-zlib-static/lib -L/c/mingw482/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware' Thread model: posix gcc version 4.8.2 (i686-posix-dwarf-rev3, Built by MinGW-W64 project) 至此,你的開發環境已經搭建好了,很簡單吧
第二部分:下載下傳bitcoin引用的外部庫 我們把它們全部放在 C:\deps目錄下 2.1 安裝OpenSSL下載下傳:http://www.openssl.org/source/openssl-1.0.1g.tar.gz 進入啟動 MinGw shell 比如目錄:(C:\MinGW\msys\1.0\msys.bat)運作這個msys.bat,就會啟動一個shell環境,提示符是$ 輸入指令 cd /c/deps/ tar xvfz openssl-1.0.1g.tar.gz cd openssl-1.0.1g Configure no-shared no-dso mingw make
等待幾分鐘後,就把openssl編譯好了。
2.2 下載下傳Berkeley DB 通路: http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz 我們推薦使用 4.8版本 同樣在msys shell環境下輸入以下指令 cd /c/deps/ tar xvfz db-4.8.30.NC.tar.gz cd db-4.8.30.NC/build_unix ../dist/configure --enable-mingw --enable-cxx --disable-shared --disable-replication make 等待編譯
2.3 安裝Boost,下載下傳位址: http://sourceforge.net/projects/boost/files/boost/1.55.0/
windows指令行: cd C:\deps\boost_1_55_0\ bootstrap.bat mingw b2 --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
2.4 安裝Miniupnpc 下載下傳位址: http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.tar.gz
cd C:\deps\miniupnpc mingw32-make -f Makefile.mingw init upnpc-static
2.5下載下傳 protoc 和 libprotobuf: Download and unpack http://protobuf.googlecode.com/files/protobuf-2.5.0.zip msys shell指令
cd /c/deps/protobuf-2.5.0 configure --disable-shared make
2.6 qrencode: 下載下傳位址: http://prdownloads.sourceforge.net/libpng/libpng-1.6.10.tar.gz?download 指令 cd /c/deps/libpng-1.6.10 configure --disable-shared make
下載下傳 http://fukuchi.org/works/qrencode/qrencode-3.4.3.tar.gz ode: cd /c/deps/qrencode-3.4.3
LIBS="../libpng-1.6.10/.libs/libpng16.a ../../mingw32/i686-w64-mingw32/lib/libz.a" \ png_CFLAGS="-I../libpng-1.6.10" \ png_LIBS="-L../libpng-1.6.10/.libs" \ configure --enable-static --disable-shared --without-tools
make
2.7 安裝 Qt 5 庫 下載下傳和解壓縮 http://download.qt-project.org/official_releases/qt/5.2/5.2.1/submodules/qtbase-opensource-src-5.2.1.7z http://download.qt-project.org/official_releases/qt/5.2/5.2.1/submodules/qttools-opensource-src-5.2.1.7z 在 windows指令行輸入: set INCLUDE=C:\deps\libpng-1.6.10;C:\deps\openssl-1.0.1g\include set LIB=C:\deps\libpng-1.6.10\.libs;C:\deps\openssl-1.0.1g
cd C:\Qt\5.2.1 configure.bat -release -opensource -confirm-license -static -make libs -no-sql-sqlite -no-opengl -system-zlib -qt-pcre -no-icu -no-gif -system-libpng -no-libjpeg -no-freetype -no-angle -no-vcproj -openssl-linked -no-dbus -no-audio-backend -no-wmf-backend -no-qml-debug
mingw32-make
set PATH=%PATH%;C:\Qt\5.2.1\bin
cd C:\Qt\qttools-opensource-src-5.2.1 qmake qttools.pro mingw32-make
3. 下載下傳Bitcoin 0.9.1 位址: https://github.com/bitcoin/bitcoin/archive/v0.9.1.zip
在msys shell下輸入以下指令行: cp /c/deps/libpng-1.6.10/.libs/libpng16.a /c/deps/libpng-1.6.10/.libs/libpng.a
cd /c/bitcoin-0.9.1
./autogen.sh
CPPFLAGS="-I/c/deps/boost_1_55_0 \ -I/c/deps/db-4.8.30.NC/build_unix \ -I/c/deps/openssl-1.0.1g/include \ -I/c/deps \ -I/c/deps/protobuf-2.5.0/src \ -I/c/deps/libpng-1.6.10 \ -I/c/deps/qrencode-3.4.3" \ LDFLAGS="-L/c/deps/boost_1_55_0/stage/lib \ -L/c/deps/db-4.8.30.NC/build_unix \ -L/c/deps/openssl-1.0.1g \ -L/c/deps/miniupnpc \ -L/c/deps/protobuf-2.5.0/src/.libs \ -L/c/deps/libpng-1.6.10/.libs \ -L/c/deps/qrencode-3.4.3/.libs" \ ./configure \ --disable-upnp-default \ --disable-tests \ --with-qt-incdir=/c/Qt/5.2.1/include \ --with-qt-libdir=/c/Qt/5.2.1/lib \ --with-qt-bindir=/c/Qt/5.2.1/bin \ --with-qt-plugindir=/c/Qt/5.2.1/plugins \ --with-boost-system=mgw48-mt-s-1_55 \ --with-boost-filesystem=mgw48-mt-s-1_55 \ --with-boost-program-options=mgw48-mt-s-1_55 \ --with-boost-thread=mgw48-mt-s-1_55 \ --with-boost-chrono=mgw48-mt-s-1_55 \ --with-protoc-bindir=/c/deps/protobuf-2.5.0/src
make
strip src/bitcoin-cli.exe strip src/bitcoind.exe strip src/qt/bitcoin-qt.exe
這樣,你就得到了編譯好的 bitcoin-cli.exe和bitcoind.exe ,bitcoin-qt.exe(windows QT圖形界面的錢包軟體)
轉載本文,請注明出處:
http://blog.sina.com.cn/s/blog_5922b3960101s5j9.html
本文對原文的部分錯誤進行了修改。