Library Requirements
--------------------
You will need several development libraries:
* libsqlite3: for database support.
* libgmp: for secp256k1
For actually doing development and running the tests, you will also need:
* pip3: to install python-bitcoinlib
* asciidoc: for formatting the man pages (if you change them)
* valgrind: for extra debugging checks
You will also need a version of bitcoind with segregated witness and estimatesmartfee economical node, such as the 0.15 or above.
To Build on Ubuntu 15.10 or above
---------------------
Get dependencies:
```
sudo apt-get install -y autoconf automake build-essential git libtool libgmp-dev libsqlite3-dev python python3 net-tools libsodium-dev
```
If you don't have Bitcoin installed locally you'll need to install that as well:
```
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install -y bitcoind
```
For development or running tests, get additional dependencies:
```
sudo apt-get install -y asciidoc valgrind python3-pip
sudo pip3 install python-bitcoinlib
```
Clone lightning:
```
git clone https://github.com/ElementsProject/lightning.git
cd lightning
```
Build lightning:
```
make
```
Running lightning:
```
bitcoind &
./lightningd/lightningd &
./cli/lightning-cli help
```
**Note**: You may need to include `testnet=1` in `bitcoin.conf`
To Build on FreeBSD 11.1-RELEASE
---------------------
Get dependencies:
```
# pkg install -y autoconf automake git gmake libtool python python3 sqlite3
```
If you don't have Bitcoin installed locally you'll need to install that as well:
```
# pkg install -y bitcoin-daemon bitcoin-utils
```
Clone lightning:
```
$ git clone https://github.com/ElementsProject/lightning.git
$ cd lightning
```
Build lightning:
```
$ gmake
```
Running lightning:
**Note**: Edit your `/usr/local/etc/bitcoin.conf` to include `rpcuser=<foo>` and `rpcpassword=<bar>` first, you may also need to include `testnet=1`
```
# service bitcoind start
$ ./lightningd/lightningd &
$ ./cli/lightning-cli help
```
To Build on Nix{,OS}
--------------------
Untested on MacOS/Windows/Other Linux. Works on NixOS.
Use nix-shell launch a shell with a full clightning dev environment:
```
$ nix-shell -Q -p gdb sqlite autoconf git clang libtool gmp sqlite autoconf \
autogen automake 'python3.withPackages (p: [p.bitcoinlib])' \
valgrind asciidoc --run make
```
To cross-compile for Android
--------------------
Make a standalone toolchain as per https://developer.android.com/ndk/guides/standalone_toolchain.html. For c-lightning you must target an API level of 24 or higher.
Depending on your toolchain location and target arch, source env variables such as:
```
export PATH=$PATH:/path/to/android/toolchain/bin
# Change depending on target device arch
target_host=arm-linux-androideabi
export AR=$target_host-ar
export AS=$target_host-clang
export CC=$target_host-clang
export CXX=$target_host-clang++
export LD=$target_host-ld
export STRIP=$target_host-strip
```
Two makefile targets should not be cross-compiled so we specify a native CC:
```
make CC=clang clean ccan/tools/configurator/configurator
make clean -C ccan/ccan/cdump/tools & & make CC=clang -C ccan/ccan/cdump/tools
```
Install the `qemu-user` package. This will allow you to properly configure the build for the target device environment. Build with:
```
BUILD=x86_64 HOST=arm-linux-androideabi make PIE=1 DEVELOPER=0 CONFIGURATOR_CC="arm-linux-androideabi-clang -static"
```