4.2 KiB
Build instructions
You'll need the ZK-SNARK params from the Zcash ceremony before running, so let's do that now:
./scripts/fetch-zcash-params.sh
If your device is has low RAM (<1.5GB), the build may fail. gcc
can be tuned to conserve memory with additional CXXFLAGS:
./configure CXXFLAGS="--param ggc-min-expand=1 --param ggc-min-heapsize=32768"
Local build (using depends/
) - Linux
For this approach, you will need to specify --prefix
when running ./configure
:
Requirements:
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3 libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev
Replace HOST
with any OS in host-platform-triplets
(see here).
./autogen.sh
cd depends
make HOST=x86_64-unknown-linux-gnu
cd ..
./configure --prefix=$PWD/depends/x86_64-unknown-linux-gnu
make
Done!
Global build - Linux
Tested on Ubuntu 18
To build + install global dependencies, we'll need a working dir: mkdir ~/mylibs
.
You should be able to execute the following commands in order to get set up.
First,
sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3 libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-test-dev libboost-thread-dev wget
And optionally,
sudo apt-get install libminiupnpc-dev
sudo apt-get install libzmq3-dev
Now we begin the build, stepping through each of the would-be errors. The final steps will be:
./autogen
./configure
make
Build steps + possible errors
Step 1: Run ./autogen
Step 2: Install dependencies before we run ./configure
Install bdb 6.2.23 globally (http://www.linuxfromscratch.org/blfs/view/8.0/server/db.html):
wget http://download.oracle.com/berkeley-db/db-6.2.23.tar.gz
cd build_unix &&
../dist/configure --prefix=/usr \
--enable-compat185 \
--enable-dbm \
--disable-static \
--enable-cxx &&
make
sudo make docdir=/usr/share/doc/db-6.2.23 install
sudo chown -v -R root:root \
/usr/bin/db_* \
/usr/include/db{,_185,_cxx}.h \
/usr/lib/libdb*.{so,la} \
/usr/share/doc/db-6.2.23
Fixes error: configure: error: libdb_cxx headers missing
Install libgmp globally (https://gmplib.org/download/gmp/gmp-6.1.1.tar.xz):
cd ~/mylibs
wget https://gmplib.org/download/gmp/gmp-6.1.1.tar.xz
tar -xvf gmp-6.1.1.tar.xz
cd gmp-6.1.1
./configure
make
make check # (Verify OK)
sudo make install
Fixes error: configure: error: libgmp headers missing
,
sudo apt install libgmp-dev
Fixes error: configure: error: libgmpxx headers missing
Step 3: Run make
sudo apt install libsodium-dev
Fixes error:
./crypto/common.h:15:10: fatal error: sodium.h:
No such file or directory #include <sodium.h>
^~~~~~~~~~
compilation terminated.
sudo apt install libgtest-dev
Fixes error:
libsnark/algebra/curves/tests/test_bilinearity.cpp:13:10: fatal error: gtest/gtest.h: No such file or directory
#include <gtest/gtest.h>
^~~~~~~~~~~~~~~
compilation terminated.
Install cargo and build librustzcash:
sudo apt-install cargo
cd ~/mylibs
wget https://github.com/zcash/librustzcash/archive/91348647a86201a9482ad4ad68398152dc3d635e.tar.gz
mkdir librustzcash-9134864
tar -xvf 91348647a86201a9482ad4ad68398152dc3d635e.tar.gz -C librustzcash-9134864
cd librustzcash-9134864
cargo build --release
sudo cp target/release/librustzcash.a /usr/lib
sudo cp include/librustzcash.h /usr/include
Fixes error: /usr/bin/ld: cannot find -lrustzcash
All set - Dependencies globally installed. Now let's run the build:
./autogen
./configure
make
make install # optional, installs cli/daemon globally
Done!
MacOS
Instead of the above steps, run:
cd scripts
./build-mac.sh
Done!