Bitcoin编译Windows64版本

Bitcoin编译Windows64版本。

需要使用Mingw-w64交叉编译工具。

操作系统使用的还是Ubuntu 16.04/18.04版本,最好新建一个新的目录,跟Linux版的区分开。

更新软件包

sudo apt update
sudo apt upgrade

安装依赖

比起Linux版,需要额外安装curl,后续会用到。少了其它一些依赖,比如qt、boost等等,这些会在稍会的环节自动下载并配置。

sudo apt install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl

16.04额外需要

sudo apt install software-properties-common
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu zesty universe"
sudo apt update
sudo apt upgrade

设置mingw32编译器

# Set the default mingw32 g++ compiler option to posix.
sudo update-alternatives --config x86_64-w64-mingw32-g++ 

在列出的选项中选择posix的那个。

源码改动点

除了Linux的改动外,还需要

  1. 修改qt.mk源码
    depends/package/qt.mk中第三行的official_releasesnew_archive,原因是Qt的下载路径换了。

  2. chainparams.cpp中的base58Prefixes
    改为类似如下写法

    base58Prefixes[PUBKEY_ADDRESS] = {108};  //k
    base58Prefixes[SCRIPT_ADDRESS] = {125};  //s
    base58Prefixes[SECRET_KEY] =     {128};
    base58Prefixes[EXT_PUBLIC_KEY] = {0x04, 0x88, 0xB2, 0x1E};
    base58Prefixes[EXT_SECRET_KEY] = {0x04, 0x88, 0xAD, 0xE4};

或者更高版本的写法

base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,111);
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,196);
base58Prefixes[SECRET_KEY] =     std::vector<unsigned char>(1,239);
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x35)(0x87)(0xCF).convert_to_container<std::vector<unsigned char> >();
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x35)(0x83)(0x94).convert_to_container<std::vector<unsigned char> >();

配置和编译

# strip out problematic Windows %PATH% imported var
PATH=$(echo "$PATH" | sed -e 's/:\/mnt.*//g') 

cd depends

make HOST=x86_64-w64-mingw32 -j4

这一步会用到curl去fetch软件包,这一步时间会比较长,有些包需要翻墙才可以。

开始编译

# 切换到源码根目录
cd ../
./autogen.sh
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32

make

编译成功后就可以在srcsrc/qt目录下找到编译好的几个exe文件,这点跟Linux版是一样的。

Leave a Comment

豫ICP备19001387号-1