How To Compile Altcoin For Windows on Linux Using mxe and mingw

Posted By : Chandan Kumar Singh | 31-Oct-2017

We are going to make altcoin qt for windows on ubuntu 14.04. We have clone peercoin and made a funcoin by replacing some parameter, I am assuming you have developed your coin.

 

First install required dependencies

command: 

sudo apt-get install autoconf automake autopoint bash bison bzip2 p7zip-full cmake flex gettext git g++ gperf intltool libffi-dev libtool libltdl-dev libssl-dev libxml-parser-perl make openssl patch perl pkg-config python ruby scons sed unzip wget xz-utils

sudo apt-get install g++-multilib libc6-dev-i386

 

move to any folder, here I am going in mnt folder and taking the fresh mxe clone.

 

cd /mnt
git clone https://github.com/mxe/mxe.git

 

Now compile boost

 

make MXE_TARGETS="i686-w64-mingw32.static" boost

 

Compile qt

 

make MXE_TARGETS="i686-w64-mingw32.static" qt

 

mxe does not support barkeley db and miniupnpc, so we have to compile these explicitly

 

compiling the barkeley db:

 

cd /mnt
wget http://download.oracle.com/berkeley-db/db-4.8.30.tar.gz
tar zxvf db-4.8.30.tar.gz
cd /mnt/db-4.8.30
touch compile-db.sh
chmod ugo+x compile-db.sh

 

now edit the compile-db.sh script file and put the below content and save

 

#!/bin/bash
MXE_PATH=/mnt/mxe
sed -i "s/WinIoCtl.h/winioctl.h/g" src/dbinc/win_db.h
mkdir build_mxe
cd build_mxe

CC=$MXE_PATH/usr/bin/i686-w64-mingw32.static-gcc \
CXX=$MXE_PATH/usr/bin/i686-w64-mingw32.static-g++ \
../dist/configure \
	--disable-replication \
	--enable-mingw \
	--enable-cxx \
	--host x86 \
	--prefix=$MXE_PATH/usr/i686-w64-mingw32.static

make

make install

 

for running the file command 

 

./compile-db.sh

 compiling miniupnpc

cd /mnt
wget http://miniupnp.free.fr/files/miniupnpc-1.6.20120509.tar.gz
tar zxvf miniupnpc-1.6.20120509.tar.gz
cd /mnt/miniupnpc-1.6.20120509
touch com-min.sh
chmod ugo+x com-min.sh

now edit the com-min.sh script file and put the below content and save

#!/bin/bash
MXE_PATH=/mnt/mxe

CC=$MXE_PATH/usr/bin/i686-w64-mingw32.static-gcc \
AR=$MXE_PATH/usr/bin/i686-w64-mingw32.static-ar \
CFLAGS="-DSTATICLIB -I$MXE_PATH/usr/i686-w64-mingw32.static/include" \
LDFLAGS="-L$MXE_PATH/usr/i686-w64-mingw32.static/lib" \
make libminiupnpc.a

mkdir $MXE_PATH/usr/i686-w64-mingw32.static/include/miniupnpc
cp *.h $MXE_PATH/usr/i686-w64-mingw32.static/include/miniupnpc
cp libminiupnpc.a $MXE_PATH/usr/i686-w64-mingw32.static/lib

 

for running the file command 

 

./com-min.sh

 

now add mxe bin to env PATH:

 

export PATH=/mnt/mxe/usr/bin:$PATH

 

now paste funcoin or take clone from github

 

cd /mnt
// paste your altcoin code
cd /mnt/funcoin
touch compile-coin.sh
chmod ugo+x compile-coin.sh

 

now edit compile-coin.sh file and paste the below content

 

#!/bin/bash
MXE_INCLUDE_PATH=/mnt/mxe/usr/i686-w64-mingw32.static/include
MXE_LIB_PATH=/mnt/mxe/usr/i686-w64-mingw32.static/lib

i686-w64-mingw32.static-qmake-qt4 \
	BOOST_LIB_SUFFIX=-mt \
	BOOST_THREAD_LIB_SUFFIX=_win32-mt \
	BOOST_INCLUDE_PATH=$MXE_INCLUDE_PATH/boost \
	BOOST_LIB_PATH=$MXE_LIB_PATH \
	OPENSSL_INCLUDE_PATH=$MXE_INCLUDE_PATH/openssl \
	OPENSSL_LIB_PATH=$MXE_LIB_PATH \
	BDB_INCLUDE_PATH=$MXE_INCLUDE_PATH \
	BDB_LIB_PATH=$MXE_LIB_PATH \
	MINIUPNPC_INCLUDE_PATH=$MXE_INCLUDE_PATH \
	MINIUPNPC_LIB_PATH=$MXE_LIB_PATH \
	QMAKE_LRELEASE=/mnt/mxe/usr/i686-w64-mingw32.static/qt/bin/lrelease funcoin-qt.pro

make -f Makefile.Release

 

now run the file by command ./compile-coin.sh

You will get the .exe file in release folder.

 

References : https://bitcointalk.org/index.php?topic=1080289.0

 

Thanks

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

About Author

Author Image
Chandan Kumar Singh

Chandan is a bright Web Developer with expertise in Java and Spring framework and ORM tools Hibernate. He loves technologies like Blockchain and IoT.

Request for Proposal

Name is required

Comment is required

Sending message..