maandag 24 september 2018

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


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

First install required dependencies
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.


When error:
compilation terminated.
Makefile.Release:12634: recipe for target 'build/txdb-leveldb.o' failed
make: *** [build/txdb-leveldb.o] Error 1

Run this
TARGET_OS=NATIVE_WINDOWS make libleveldb.a libmemenv.a CC=~/mxe/usr/bin/i686-w64-mingw32.static-gcc CXX=~/mxe/usr/bin/i686-w64-mingw32.static-g++




Geen opmerkingen:

Een reactie posten