2016-03-16 16:06:17 +10:30
Library Requirements
--------------------
2016-02-24 23:55:00 -05:00
2016-03-16 16:06:17 +10:30
You will need several development libraries:
2016-08-18 14:25:13 +09:30
* libsqlite3: for database support.
2016-08-19 11:05:32 +09:30
* libgmp: for secp256k1
2017-04-04 15:32:57 +09:30
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
2016-03-16 16:06:17 +10:30
2017-12-04 16:20:39 +10:30
You will also need a version of bitcoind with segregated witness and estimatesmartfee economical node, such as the 0.15 or above.
2016-05-26 15:25:24 +09:30
2017-08-29 01:29:01 +09:30
To Build on Ubuntu 15.10 or above
2016-08-12 21:09:32 -04:00
---------------------
Get dependencies:
```
2018-02-04 18:33:04 +01:00
sudo apt-get install -y autoconf automake build-essential git libtool libgmp-dev libsqlite3-dev python python3 net-tools libsodium-dev
2017-08-10 16:09:02 +02:00
```
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
2017-04-04 15:32:57 +09:30
```
For development or running tests, get additional dependencies:
```
2017-08-10 16:09:02 +02:00
sudo apt-get install -y asciidoc valgrind python3-pip
sudo pip3 install python-bitcoinlib
2016-08-12 21:09:32 -04:00
```
2017-01-11 09:42:26 +10:30
Clone lightning:
2016-08-12 21:09:32 -04:00
```
git clone https://github.com/ElementsProject/lightning.git
cd lightning
```
Build lightning:
```
make
```
Running lightning:
```
2017-08-10 16:09:02 +02:00
bitcoind &
2017-11-20 16:54:56 +07:00
./lightningd/lightningd &
2017-08-29 13:42:04 +09:30
./cli/lightning-cli help
2016-08-12 21:09:32 -04:00
```
**Note**: You may need to include `testnet=1` in `bitcoin.conf`
2018-01-22 11:31:56 -08:00
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
```
2018-01-22 14:45:00 -08:00
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
```
2018-02-26 12:48:57 +01:00
2018-02-26 13:33:35 +01:00
To cross-compile for Android
2018-02-26 12:48:57 +01:00
--------------------
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.
2018-02-26 13:33:35 +01:00
Depending on your toolchain location and target arch, source env variables such as:
2018-02-26 12:48:57 +01:00
```
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"
```