Skip to content

How To Build Lux Wallet ?

Tanguy Pruvot edited this page Aug 10, 2018 · 10 revisions

Build Lux for linux on linux

  1. Clone the Lux source code and cd into lux folder

     git clone https://github.com/LUX-Core/lux
     cd lux
    
  2. Build Luxcore:

    Configure and build the headless Lux binaries as well as the GUI (if Qt is found).

    You can disable the GUI build by passing --without-gui to configure.

    ./autogen.sh
    ./configure
    make
    
  3. It is recommended to build and run the unit tests:

    make check
    

Building for Windows on linux


cd /usr/local/src

git clone https://github.com/LUX-Core/lux

cd lux/depends 

./build-win.sh

Output windows binaries will be placed in depends/Release folder

Note: Common host-platform-triplets for cross compilation are:

  • Linux x64: x86_64-linux-gnu
  • Win32: i686-w64-mingw32
  • Win64: x86_64-w64-mingw32
  • MacOSX: x86_64-apple-darwin11
  • Linux arm 32: arm-linux-gnueabihf
  • Linux arch 64: aarch64-linux-gnu

A prefix will be generated that's suitable for plugging into Bitcoin's configure. In the above example, a dir named x86_64-w64-mingw32 will be created. To use it for Lux:

./configure --prefix=`pwd`/depends/x86_64-w64-mingw32

The first step is to install the mingw-w64 cross-compilation tool chain. Due to different Ubuntu packages for each distribution and problems with the Xenial packages the steps for each are different.

Common steps to install mingw32 cross compiler tool chain:

sudo apt install g++-mingw-w64-x86-64

Ubuntu Xenial 16.04 and Windows Subsystem for Linux

sudo apt install software-properties-common

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu zesty universe"

sudo apt update

sudo apt upgrade


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

Note that for WSL the Lux Core source path MUST be somewhere in the default mount file system, for example /usr/local/src/lux, AND not under /mnt/d/. If this is not the case the dependency autoconf scripts will fail. This means you cannot use a directory that located directly on the host Windows file system to perform the build.


Building on fedora 26 & 27:

dnf install make gcc-c++ libtool libdb4-devel libdb4-cxx-devel openssl-devel cryptopp-devel libcurl-devel miniupnpc-devel libevent-devel
# boost: may be prefered to use a local version 1.65 to avoid frequent updates
dnf install boost-devel

# qt stuff (optional)
#dnf install qt5-qttools-devel qrencode-devel cppzmq-devel czmq-devel protobuf-devel

./autogen.sh
./configure CXXFLAGS="-march=core2" --disable-bench --with-gui=no --disable-zmq --disable-asm

Building on FreeBSD

Clang is installed by default as cc compiler, this makes it easier to get started than on OpenBSD. Installing dependencies:

pkg install autoconf automake libtool pkgconf
pkg install boost-libs openssl libevent
pkg install gmake

You need to use GNU make (gmake) instead of make. (libressl instead of openssl will also work)

For the wallet (optional):

./contrib/install_db4.sh `pwd`
setenv BDB_PREFIX $PWD/db4

Then build using:

./autogen.sh
./configure BDB_CFLAGS="-I${BDB_PREFIX}/include" BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx"
gmake

To build for arch64:

cd depends

make HOST=aarch64-linux-gnu

cd ..

./autogen.sh
./configure

make HOST=aarch64-linux-gnu -j4

Build on OSX

The commands in this guide should be executed in a Terminal application. The built-in one is located in /Applications/Utilities/Terminal.app.

Preparation

Install the OS X command line tools:

`xcode-select --install`

When the popup appears, click Install.

Then install Homebrew.

Dependencies

brew install cmake automake berkeley-db4 libtool boost --c++11 --without-single --without-static miniupnpc openssl pkg-config protobuf qt5 libevent imagemagick --with-librsvg

NOTE: Building with Qt4 is still supported, however, could result in a broken UI. Building with Qt5 is recommended.

Run

Then you can either run the command-line daemon using src/luxd and src/lux-cli, or you can run the Qt GUI using src/qt/lux-qt

For in-depth description of Sparknet and how to use Lux for interacting with contracts, please see sparknet-guide.