Libiop depends on the following libraries:
- Boost - For program options within instrumentation
- CMake
- Google Test (GTest) - For testing and benchmarking
- libff - For implementations of fields with smooth multiplicative subgroups
- libfqfft - For FFTs onto smooth subgroups of multiplicative fields
- libsodium - For blake2b and randomness sampling
Google Test, libff, and libfqfft are setup using git submodules, and their dependencies can all be installed from most package managers directly. Boost, CMake, and libsodium can similarly be installed directly from most package managers. We include the commands to install these dependencies for Ubuntu and Fedora below.
- On Ubuntu 18.04 LTS:
$ sudo apt-get install build-essential cmake git libgmp3-dev libprocps-dev libboost-all-dev libssl-dev libsodium-dev- On Ubuntu 16.04 LTS:
$ sudo apt-get install build-essential cmake git libgmp3-dev libprocps4-dev libboost-all-dev libssl-dev libsodium-dev- Fedora 29:
$ sudo yum install gcc-c++ cmake make git gmp-devel procps-ng-devel boost-devel libsodium-develOn Mac OS X, install GMP from MacPorts (port install gmp).
MacPorts does not write its libraries into standard system folders, so you
might need to explicitly provide the paths to the header files and libraries by
appending CXXFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib to the line
above.
Fetch dependencies from their GitHub repos:
$ git submodule init && git submodule updateCreate a build folder:
$ mkdir build; cd buildTo create the Makefile:
$ cmake ..Then, to compile the library, tests, and profiling harness, run this within the libiop/build
directory:
$ makeThen you can run the tests:
$ cd libiop && ./test_aurora_snarkBuild flags include:
| Flag | Value | Description |
|---|---|---|
| NDEBUG | false | Enables debug mode. |
| WITH_PROCPS | ON | Enables libprocps, which is by default turned off since it is not supported on some systems such as MacOS. |
| -GNinja | Builds with Ninja instead. |