[Guide] Build FeathercoinD & Feathercoin-QT v0.9.6.1 on Ubuntu
-
Hi All,
This guide is for anyone who wants to build Feathercoind and Feathercoin-QT on Ubuntu and some Ubuntu based distros…
The following guide has been tested on:
- Ubtunu 16.04 LTS
- Ubuntu 14.04
- LinuxMint 17.3
1. Intro + Initial Setup
First we start by updating our OS a little… I used a VMware images from OsBoxes.org for the three above Distros I used for testing.
Note: For this guide, you can find/replace my home directory “/home/acid” to your “/home/YourUser” directory and all the commands should work…I recommend reading each command…but also copy and paste was invented for a reason ;-)
We start by updating the build system OS and then showing the current working directory
sudo apt-get update sudo apt-get upgrade pwd
We then make a new directory to work in and move into it.
acid@osboxes ~ $ pwd /home/acid mkdir FeathercoinBuild && cd FeathercoinBuild
2. Dependencies
Some of these you might already have installed, but I recommend running each line.
sudo apt-get install build-essential sudo apt-get install libboost-all-dev sudo apt-get install automake sudo apt-get install libtool sudo apt-get install autoconf sudo apt-get install libdb5.3++-dev sudo apt-get install libdb++-dev sudo apt-get install libprotobuf-dev sudo apt-get install protobuf-compiler sudo apt-get install libqrencode-dev sudo apt-get install qtbase5-dev sudo apt-get install libqt5opengl5-dev sudo apt-get install qttools5-dev-tools sudo apt-get install libminiupnpc-dev sudo apt-get install pkg-config
Build Berkeley DB v4.8
Note: you are free to use any version you wish, if you are importing an old wallet.dat then it should be the same BDB version as the client you used that wallet.dat file on.
pwd should show /home/$username/FeathercoinBuild
wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz tar -xvf db-4.8.30.NC.tar.gz cd db-4.8.30.NC/build_unix mkdir -p build BDB_PREFIX=$(pwd)/build ../dist/configure -disable-shared -enable-cxx -with-pic -prefix=$BDB_PREFIX make install cd ../..
Build OpenSSL
pwd should show /home/$username/FeathercoinBuild
mkdir openSSL && cd openSSL wget https://www.openssl.org/source/openssl-1.0.1l.tar.gz tar zxvf openssl-1.0.1l.tar.gz cd openssl-1.0.1l export CFLAGS="-fPIC" ./config --prefix=/home/acid/FeathercoinBuild/openSSL/build shared enable-ec enable-ecdh enable-ecdsa -lanl -ldl sudo make sudo make install cd ../..
Build ZXING
pwd should show /home/$username/FeathercoinBuild
sudo apt-get install cmake mkdir zxing && cd zxing git clone https://github.com/glassechidna/zxing-cpp.git && cd zxing-cpp mkdir build && cd build/ export CXXFLAGS="-fPIC" cmake -G "Unix Makefiles" -DCMAKE_CXX_FLAGS="-fPIC -D_GLIBCXX_USE_CXX11_ABI=1" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_STANDARD_REQUIRED=ON .. make && sudo make install cd ../../..
Edit a bug in zxing
sudo vi /usr/local/include/zxing/LuminanceSource.h
Edit line 30 from “private:” to “public:” and save
–
GIT was not installed by default soo…
sudo apt-get install git
3. Feathercoin !
Grab the FTC source
pwd should show /home/$username/FeathercoinBuild
git clone https://github.com/FeatherCoin/Feathercoin.git FTC0961 && cd FTC0961
Note: see where I’ve used the BDB_PREFIX which in the ftc configure command which is the same prefix we used when we compiled berkeleyDB earlier
./autogen.sh ./configure --prefix=/home/acid/FeathercoinBuild/FTCbuild CPPFLAGS="-I${BDB_PREFIX}/include/ -O2" LDFLAGS="-L${BDB_PREFIX}/lib/" PKG_CONFIG_PATH=/home/acid/FeathercoinBuild/openSSL/build/lib/pkgconfig LIBS=-Wl,-rpath=/home/acid/FeathercoinBuild/openSSL/build/lib SSL_LIBS="/home/acid/FeathercoinBuild/openSSL/build/lib/libssl.a /home/acid/FeathercoinBuild/openSSL/build/lib/libcrypto.a -ldl" --with-gui make -j 2 make install
You can run Feathercoin-QT like this
cd /home/acid/FeathercoinBuild/FTCbuild/bin ./feathercoin-qt
Note: Your /bin/ directory will contain the following binaries
acid@osboxes ~/FeathercoinBuild/FTCbuild/bin $ ls -lrth total 398M -rwxr-xr-x 1 acid acid 77M May 31 19:34 feathercoind -rwxr-xr-x 1 acid acid 17M May 31 19:34 feathercoin-cli -rwxr-xr-x 1 acid acid 123M May 31 19:34 feathercoin-qt -rwxr-xr-x 1 acid acid 79M May 31 19:34 test_feathercoin-qt -rwxr-xr-x 1 acid acid 104M May 31 19:34 test_feathercoin acid@osboxes ~/FeathercoinBuild/FTCbuild/bin $
I hope this helps someone. ;-)
Change Log:
July-2017 Updated for Feathercoin 0.9.6.1
May-2017 Removed old bugs/bug fixes
May-2017 Updated Guide for Feathercoin 0.9.6
May-2017 Updated Commands
Updated dependency versionlibdb5.1++-dev
is nowlibdb5.3++-dev
Updated title to match title convention of other guides I’ve written
Added commandsudo apt-get install pkg-config
- Thank you @looarn -
@Aciddude great guide, I’ll test using Wellenreiter’s zxing deb for getting 0.9.3.1 to install on 15.10.
-
@aciddude : Great work :)
It helped me already. I will implement the change in rpcrawtransaction.cpp and build the binary install package, so users can use their package manager to install/update the feathercoin software.
Thanks a lot :)
One remark: did you try to use Berkeley db 5.1, too?
The configure script should search for 5.1,5.0,4.8 in that order. -
@Wellenreiter said:
@aciddude : Great work :)
It helped me already. I will implement the change in rpcrawtransaction.cpp and build the binary install package, so users can use their package manager to install/update the feathercoin software.
Thanks a lot :)
One remark: did you try to use Berkeley db 5.1, too?
The configure script should search for 5.1,5.0,4.8 in that order.On my first try I installed Berkeley DB 5.0 but then the configure script complained about “this build wont be portable because of incompatible bdb…so then I went down to 4.8”
This needs a bit of QA though…I don’t think BitMessage worked…everytime I clicked it, nothing happened…or does that have to wait for a full blockchain sync ?
-
The warning about the Berkeley db means, that you can’t copy the block and wallet database to another system, unless it is Berkeley db 5.0 also, but this is true for every version of Berkeley db, so the warning is useless.
In order to use Bitmessage you need to install Bitmessage on your system, preferably using a packet manager. The program simply checks if there is a bitmessage binary in your path and starts Bitmessage as external program. Bitmessage is not integrated in the code.
See bitcoingui.cpp lines 704 - 716 -
Another remark
As far as I know, --disable-shared forced a static build, where all libraries are complied into the binary, what increases the size of the binary and overall memory usage.
For me the compile works without that parameter,too -
@wrapper - Did you manage to get 15.10 working ? I’m wondering if I should give this a shot and write another guide or maybe you guys can give me something else to do that’s a better use of my time ?
let me know!
-
@aciddude said:
@wrapper - Did you manage to get 15.10 working ? I’m wondering if I should give this a shot and write another guide or maybe you guys can give me something else to do that’s a better use of my time ?let me know!
If you want to see if you can get the 15.10 compile / test finished, please go ahead.
Unfortunately, I didn’t use a Virtual box and sort of went bit exotic on the dependency checking and crashed out my 15.10 system.
Basically, don’t ever install libqt5-gles-dev, as when you remove it, Kubuntu does not reinstall the kde dependency, libqt5-gles it removed and deleted all the kde dependencies for my desktop.
I’ve ended installing 16.04, which didn’t upgrade well, possibly due to multiple sources in software sources list, so I ended up reinstalling / upgrading. It didn’t update lots of programs, so a bit more work to get my home system back up to speed.
As that happened, also had the cooling backing plate failed on my NSGminer R9 290 test computer. I’ve had to search the house for a spare I know I’ve kept for 5 years. So I’ve had to reinstall that, luckily had some thermal paste to re-seat the CPU.
-
@aciddude said:
This needs a bit of QA though…I don’t think BitMessage worked…everytime I clicked it, nothing happened…or does that have to wait for a full blockchain sync ?
@Lizhi added Bitmessage feature
With regard to Bitmessage, I’m just researching some of that, to fix my install with 16.04.
Note : I’ve just tried Bitmessage and failed : so it might be python 2 not installed by default in 16.04 -
Your system may be attempting to run PyBitmessage with python 3. In this case, run python2 ~/PyBitmessage/src/bitmessagemain.py
Bitmessage requires PyQt and openssl to run
Bitmessage dependancies :
sudo apt-get install python openssl git python-qt4Additionally on 16.04 :
sudo apt install libmessaging-menu-devPull latest Bitmessage updates from :
https://github.com/Bitmessage/PyBitmessageBitmessage has been updated quite a bit if anyone wants to test it :
BM-Gu7Bm8cUYCW1vrnjcgrte5dLnAc6spmx
Note : Bitmessage upgrade - User interface for Bitcoin payments issue #841
https://github.com/Bitmessage/PyBitmessage/issues/841 -
@aciddude
@wrapperI’ve managed to compile for 15.10 and 16.04.
The binary packages are just build and will be available this evening at
https://software.opensuse.org/package/feathercoinRemark: 0.9.3.x gui does not compile with qt4. You need to specify configure --with-gui=qt5
-
Good information. Thanks everyone!
- UnklAdM
-
Forgot to mention: I also patched rpcrawtransaction.cpp to detect boost 1.58, so no modification of the code is needed to compile for Ubuntu 15.10 and 16.04
-
Re : Fixing rcprawtransaction.cpp transaction bug squared .
@Wellenreiter I want to give you more kudos +1000 :)
-
It’s currently on 0.9.3.1 only, as this is the latest release version.
-
Hey,
Just to say thanks a bunch @aciddude !
I got a node running on a debian.
I just need to add this dependency : apt-get install -y pkg-config
Actually syncing. ^^
-
Hi All,
Ubuntu has recently changed a few things.
building Feathercoin 0.9.6 - you might come across this error:
libbitcoinqt.a(libbitcoinqt_a-snapwidget.o): In function SnapWidget::on_snapButton_clicked()': [ 743s] /usr/src/packages/BUILD/src/qt/snapwidget.cpp:72: undefined reference tozxing::String::getTextabi:cxx11 const’
To fix, you need to rebuild zxing like this:
mkdir zxing && cd zxing git clone https://github.com/glassechidna/zxing-cpp.git cd zxing-cpp/ mkdir build cd build/ export CXXFLAGS="-fPIC" cmake -G "Unix Makefiles" -DCMAKE_CXX_FLAGS="-fPIC -D_GLIBCXX_USE_CXX11_ABI=1" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=11 -DCMAKE_CXX_STANDARD_REQUIRED=ON .. make && sudo make install
-
That’s the solution to one of the little problems I have while creating the Linux installation packages :)
Many thanks
@aciddude