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
Cookies are important to the proper functioning of a site. To improve your experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click Agree and Proceed to accept cookies and go directly to the site or click on View Cookie Settings to see detailed descriptions of the types of cookies and choose whether to accept certain cookies while on the site.
About Author
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.