2019-02-08 16:06:34 +01:00
Install
=======
2018-03-21 20:40:12 +01:00
1. [Library Requirements ](#library-requirements )
2. [Ubuntu ](#to-build-on-ubuntu )
3. [Fedora ](#to-build-on-fedora )
4. [FreeBSD ](#to-build-on-freebsd )
2020-10-19 13:03:46 +02:00
5. [OpenBSD ](#to-build-on-openbsd )
6. [NixOS ](#to-build-on-nixos )
7. [macOS ](#to-build-on-macos )
8. [Android ](#to-cross-compile-for-android )
9. [Raspberry Pi ](#to-cross-compile-for-raspberry-pi )
10. [Armbian ](#to-compile-for-armbian )
11. [Alpine ](#to-compile-for-alpine )
12. [Additional steps ](#additional-steps )
2018-03-21 20:40:12 +01:00
2016-03-16 06:36:17 +01:00
Library Requirements
--------------------
2016-02-25 05:55:00 +01:00
2016-03-16 06:36:17 +01:00
You will need several development libraries:
2016-08-18 06:55:13 +02:00
* libsqlite3: for database support.
2016-08-19 03:35:32 +02:00
* libgmp: for secp256k1
2018-06-04 06:28:02 +02:00
* zlib: for compression routines.
2017-04-04 08:02:57 +02:00
For actually doing development and running the tests, you will also need:
* pip3: to install python-bitcoinlib
* valgrind: for extra debugging checks
2016-03-16 06:36:17 +01:00
2020-01-22 22:52:04 +01:00
You will also need a version of bitcoind with segregated witness and `estimatesmartfee` with `ECONOMICAL` mode support, such as the 0.16 or above.
2016-05-26 07:55:24 +02:00
2018-03-21 20:40:12 +01:00
To Build on Ubuntu
2016-08-13 03:09:32 +02:00
---------------------
2018-03-21 20:40:12 +01:00
OS version: Ubuntu 15.10 or above
2016-08-13 03:09:32 +02:00
Get dependencies:
2018-03-01 15:05:52 +01:00
2018-04-22 12:10:09 +02:00
sudo apt-get update
2018-03-01 15:05:52 +01:00
sudo apt-get install -y \
2021-11-07 14:26:59 +01:00
autoconf automake build-essential git libtool libgmp-dev libsqlite3-dev \
2022-02-22 14:42:40 +01:00
python3 python3-pip net-tools zlib1g-dev libsodium-dev gettext
2022-03-17 04:20:21 +01:00
pip3 install --upgrade pip
pip3 install --user poetry
2017-08-10 16:09:02 +02:00
2018-03-01 14:58:48 +01:00
If you don't have Bitcoin installed locally you'll need to install that
2020-05-08 23:40:49 +02:00
as well. It's now available via [snapd ](https://snapcraft.io/bitcoin-core ).
2018-03-01 15:05:52 +01:00
2020-05-08 23:40:49 +02:00
sudo apt-get install snapd
sudo snap install bitcoin-core
# Snap does some weird things with binary names; you'll
# want to add a link to them so everything works as expected
sudo ln -s /snap/bitcoin-core/current/bin/bitcoin{d,-cli} /usr/local/bin/
2017-04-04 08:02:57 +02:00
2017-01-11 00:12:26 +01:00
Clone lightning:
2018-03-01 15:05:52 +01:00
git clone https://github.com/ElementsProject/lightning.git
cd lightning
2021-11-05 23:43:36 +01:00
2019-09-25 14:52:54 +02:00
For development or running tests, get additional dependencies:
2021-11-07 14:26:59 +01:00
sudo apt-get install -y valgrind libpq-dev shellcheck cppcheck \
2021-11-05 23:43:36 +01:00
libsecp256k1-dev jq
2016-08-13 03:09:32 +02:00
2022-04-06 03:43:21 +02:00
If you want to build the Rust plugins (currently, cln-grpc):
sudo apt-get install -y cargo rustfmt
2016-08-13 03:09:32 +02:00
Build lightning:
2018-03-01 15:05:52 +01:00
2022-04-06 03:36:08 +02:00
poetry install
2018-06-21 05:24:37 +02:00
./configure
2022-04-06 03:36:08 +02:00
poetry run make
2019-09-06 23:44:39 +02:00
sudo make install
2016-08-13 03:09:32 +02:00
Running lightning:
2018-03-01 15:05:52 +01:00
bitcoind &
./lightningd/lightningd &
./cli/lightning-cli help
2018-03-21 20:40:12 +01:00
To Build on Fedora
2018-01-22 20:31:56 +01:00
---------------------
2018-03-21 20:40:12 +01:00
OS version: Fedora 27 or above
Get dependencies:
```
$ sudo dnf update -y & & \
2018-06-21 03:57:39 +02:00
sudo dnf groupinstall -y \
2018-03-21 20:40:12 +01:00
'C Development Tools and Libraries' \
'Development Tools' & & \
2018-06-21 03:57:39 +02:00
sudo dnf install -y \
2018-03-21 20:40:12 +01:00
clang \
2019-09-09 23:27:20 +02:00
gettext \
2019-08-09 00:35:52 +02:00
git \
2018-03-21 20:40:12 +01:00
gmp-devel \
libsq3-devel \
python3-devel \
python3-pip \
python3-setuptools \
net-tools \
valgrind \
2018-06-21 03:57:39 +02:00
wget \
2019-02-07 21:36:50 +01:00
zlib-devel \
libsodium-devel & & \
2018-06-21 03:57:39 +02:00
sudo dnf clean all
2018-03-21 20:40:12 +01:00
```
Make sure you have [bitcoind ](https://github.com/bitcoin/bitcoin ) available to run
Clone lightning:
```
$ git clone https://github.com/ElementsProject/lightning.git
$ cd lightning
```
Build and install lightning:
```
2018-06-21 05:24:37 +02:00
$lightning> ./configure
2018-03-21 20:40:12 +01:00
$lightning> make
$lightning> sudo make install
```
Running lightning (mainnet):
```
$ bitcoind &
$ lightningd --network=bitcoin
```
Running lightning on testnet:
```
$ bitcoind -testnet &
$ lightningd --network=testnet
```
To Build on FreeBSD
2020-01-05 21:20:09 +01:00
-------------------
2018-03-21 20:40:12 +01:00
OS version: FreeBSD 11.1-RELEASE or above
2022-04-06 07:09:48 +02:00
Core Lightning is in the FreeBSD ports, so install it as any other port
2020-01-05 21:20:09 +01:00
(dependencies are handled automatically):
2018-03-01 15:05:52 +01:00
2020-01-05 21:20:09 +01:00
# pkg install c-lightning
2018-01-22 20:31:56 +01:00
2020-01-05 21:20:09 +01:00
for a binary, pre-compiled package. If you want to compile locally and
fiddle with compile time options:
2018-03-01 15:05:52 +01:00
2020-01-05 21:20:09 +01:00
# cd /usr/ports/net-p2p/c-lightning & & make install
2018-01-22 20:31:56 +01:00
2020-01-05 21:20:09 +01:00
mrkd is required to build man pages from markdown files (not done by the port):
2018-03-01 15:05:52 +01:00
2020-01-05 21:20:09 +01:00
# cd /usr/ports/devel/py-pip & & make install
2022-02-22 14:42:40 +01:00
$ pip install --user poetry
$ poetry install
2018-01-22 20:31:56 +01:00
2020-01-05 21:20:09 +01:00
See `/usr/ports/net-p2p/c-lightning/Makefile` for instructions on how to
build from an arbitrary git commit, instead of the latest release tag.
2018-03-01 15:05:52 +01:00
2021-11-05 23:43:36 +01:00
**Note**: Make sure you've set an utf-8 locale, e.g.
2020-01-02 00:51:50 +01:00
`export LC_CTYPE=en_US.UTF-8` , otherwise manpage installation may fail.
2018-01-22 20:31:56 +01:00
Running lightning:
2020-01-05 21:20:09 +01:00
Configure bitcoind, if not already: add `rpcuser=<foo>` and `rpcpassword=<bar>`
to `/usr/local/etc/bitcoin.conf` , maybe also `testnet=1` .
Configure lightningd: copy `/usr/local/etc/lightningd-bitcoin.conf.sample` to
`/usr/local/etc/lightningd-bitcoin.conf` and edit according to your needs.
2018-01-22 20:31:56 +01:00
2018-03-01 15:05:52 +01:00
# service bitcoind start
2020-01-05 21:20:09 +01:00
# service lightningd start
# lightning-cli --rpc-file /var/db/c-lightning/bitcoin/lightning-rpc --lightning-dir=/var/db/c-lightning help
2018-01-22 23:45:00 +01:00
2020-10-19 13:03:46 +02:00
To Build on OpenBSD
--------------------
2021-11-05 23:43:36 +01:00
OS version: OpenBSD 6.7
2020-10-19 13:03:46 +02:00
Install dependencies:
```
pkg_add git python gmake py3-pip libtool gmp
pkg_add automake # (select highest version, automake1.16.2 at time of writing)
pkg_add autoconf # (select highest version, autoconf-2.69p2 at time of writing)
```
Install `mako` and `mrkd` otherwise we run into build errors:
```
2022-02-22 14:42:40 +01:00
pip3.7 install --user poetry
poetry install
2020-10-19 13:03:46 +02:00
```
Add `/home/<username>/.local/bin` to your path:
`export PATH=$PATH:/home/<username>/.local/bin`
Needed for `configure` :
```
export AUTOCONF_VERSION=2.69
export AUTOMAKE_VERSION=1.16
./configure
```
Finally, build `c-lightning` :
`gmake`
2018-03-21 20:40:12 +01:00
To Build on NixOS
2018-01-22 23:45:00 +01:00
--------------------
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 \
2019-02-07 21:36:50 +01:00
autogen automake libsodium 'python3.withPackages (p: [p.bitcoinlib])' \
2019-08-29 19:33:52 +02:00
valgrind --run make
2018-01-22 23:45:00 +01:00
```
2018-02-26 12:48:57 +01:00
2018-03-23 15:37:50 +01:00
To Build on macOS
2018-03-22 13:41:29 +01:00
---------------------
2019-02-05 05:55:40 +01:00
Assuming you have Xcode and Homebrew installed. Install dependencies:
2018-03-22 13:41:29 +01:00
2020-01-11 00:08:32 +01:00
$ brew install autoconf automake libtool python3 gmp gnu-sed gettext libsodium
2019-09-12 23:08:04 +02:00
$ ln -s /usr/local/Cellar/gettext/0.20.1/bin/xgettext /usr/local/opt
$ export PATH="/usr/local/opt:$PATH"
If you need SQLite (or get a SQLite mismatch build error):
$ brew install sqlite
$ export LDFLAGS="-L/usr/local/opt/sqlite/lib"
$ export CPPFLAGS="-I/usr/local/opt/sqlite/include"
2021-10-22 14:04:05 +02:00
Some library paths are different when using `homebrew` with M1 macs, therefore the following two variables need to be set for M1 machines
$ export CPATH=/opt/homebrew/include
$ export LIBRARY_PATH=/opt/homebrew/lib
2019-09-12 23:08:04 +02:00
If you need Python 3.x for mako (or get a mako build error):
$ brew install pyenv
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ source ~/.bash_profile
$ pyenv install 3.7.4
$ pip install --upgrade pip
2022-04-06 21:03:56 +02:00
$ pip install poetry
2018-03-22 13:41:29 +01:00
If you don't have bitcoind installed locally you'll need to install that
as well:
2020-01-11 00:08:32 +01:00
$ brew install berkeley-db4 boost miniupnpc pkg-config libevent
2018-03-22 13:41:29 +01:00
$ git clone https://github.com/bitcoin/bitcoin
$ cd bitcoin
$ ./autogen.sh
$ ./configure
2019-02-05 05:55:40 +01:00
$ make src/bitcoind src/bitcoin-cli & & make install
2018-03-22 13:41:29 +01:00
Clone lightning:
$ git clone https://github.com/ElementsProject/lightning.git
$ cd lightning
Build lightning:
2022-04-06 21:03:56 +02:00
$ poetry install
2018-06-21 05:24:37 +02:00
$ ./configure
2022-04-06 21:03:56 +02:00
$ poetry run make
2018-03-22 13:41:29 +01:00
Running lightning:
**Note**: Edit your `~/Library/Application\ Support/Bitcoin/bitcoin.conf`
to include `rpcuser=<foo>` and `rpcpassword=<bar>` first, you may also
need to include `testnet=1`
bitcoind &
./lightningd/lightningd &
./cli/lightning-cli help
2018-02-26 13:33:35 +01:00
To cross-compile for Android
2018-02-26 12:48:57 +01:00
--------------------
2018-03-01 14:58:48 +01:00
Make a standalone toolchain as per
https://developer.android.com/ndk/guides/standalone_toolchain.html.
2022-04-06 07:09:48 +02:00
For Core Lightning you must target an API level of 24 or higher.
2018-02-26 12:48:57 +01:00
2018-03-01 14:58:48 +01:00
Depending on your toolchain location and target arch, source env variables
such as:
2018-02-26 12:48:57 +01:00
2018-03-01 15:05:52 +01:00
export PATH=$PATH:/path/to/android/toolchain/bin
# Change next line 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
2018-03-01 14:58:48 +01:00
2018-02-26 12:48:57 +01:00
Two makefile targets should not be cross-compiled so we specify a native CC:
2018-03-01 15:05:52 +01:00
make CC=clang clean ccan/tools/configurator/configurator
make clean -C ccan/ccan/cdump/tools \
& & make CC=clang -C ccan/ccan/cdump/tools
2018-03-01 14:58:48 +01:00
Install the `qemu-user` package.
This will allow you to properly configure
the build for the target device environment.
Build with:
2018-03-01 15:05:52 +01:00
2018-05-17 21:20:03 +02:00
BUILD=x86_64 MAKE_HOST=arm-linux-androideabi \
2018-03-01 15:05:52 +01:00
make PIE=1 DEVELOPER=0 \
CONFIGURATOR_CC="arm-linux-androideabi-clang -static"
2018-03-21 20:40:12 +01:00
2018-04-03 16:10:13 +02:00
To cross-compile for Raspberry Pi
--------------------
2018-12-13 09:18:55 +01:00
Obtain the [official Raspberry Pi toolchains ](https://github.com/raspberrypi/tools ).
2021-11-05 23:43:36 +01:00
This document assumes compilation will occur towards the Raspberry Pi 3
2018-12-13 09:18:55 +01:00
(arm-linux-gnueabihf as of Mar. 2018).
2018-04-03 16:10:13 +02:00
2018-12-13 09:18:55 +01:00
Depending on your toolchain location and target arch, source env variables
will need to be set. They can be set from the command line as such:
2018-04-03 16:10:13 +02:00
export PATH=$PATH:/path/to/arm-linux-gnueabihf/bin
# Change next line depending on specific Raspberry Pi device
target_host=arm-linux-gnueabihf
export AR=$target_host-ar
export AS=$target_host-as
export CC=$target_host-gcc
export CXX=$target_host-g++
export LD=$target_host-ld
export STRIP=$target_host-strip
2018-12-13 09:18:55 +01:00
Install the `qemu-user` package. This will allow you to properly configure the
build for the target device environment.
Config the arm elf interpreter prefix:
export QEMU_LD_PREFIX=/path/to/raspberry/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/arm-linux-gnueabihf/sysroot/
2018-04-03 16:10:13 +02:00
2018-12-13 09:18:55 +01:00
Obtain and install cross-compiled versions of sqlite3, gmp and zlib:
2018-04-03 16:10:13 +02:00
2018-12-13 09:18:55 +01:00
Download and build zlib:
2022-04-05 11:18:30 +02:00
wget https://zlib.net/zlib-1.2.12.tar.gz
tar xvf zlib-1.2.12.tar.gz
cd zlib-1.2.12
2018-12-13 09:18:55 +01:00
./configure --prefix=$QEMU_LD_PREFIX
make
make install
Download and build sqlite3:
wget https://www.sqlite.org/2018/sqlite-src-3260000.zip
unzip sqlite-src-3260000.zip
cd sqlite-src-3260000
./configure --enable-static --disable-readline --disable-threadsafe --disable-load-extension --host=$target_host --prefix=$QEMU_LD_PREFIX
make
make install
2018-04-03 16:10:13 +02:00
2018-12-13 09:18:55 +01:00
Download and build gmp:
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.xz
2021-11-05 23:43:36 +01:00
tar xvf gmp-6.1.2.tar.xz
2018-12-13 09:18:55 +01:00
cd gmp-6.1.2
2019-02-09 00:57:18 +01:00
./configure --disable-assembly --host=$target_host --prefix=$QEMU_LD_PREFIX
2018-12-13 09:18:55 +01:00
make
make install
2022-04-06 07:09:48 +02:00
Then, build Core Lightning with the following commands:
2018-12-13 09:18:55 +01:00
./configure
make
2018-04-03 16:10:13 +02:00
2018-07-02 13:19:26 +02:00
To compile for Armbian
--------------------
For all the other Pi devices out there, consider using [Armbian ](https://www.armbian.com ).
You can compile in `customize-image.sh` using the instructions for Ubuntu.
2022-04-06 07:09:48 +02:00
A working example that compiles both bitcoind and Core Lightning for Armbian can
2018-07-02 13:19:26 +02:00
be found [here ](https://github.com/Sjors/armbian-bitcoin-core ).
2020-04-24 04:47:07 +02:00
To compile for Alpine
---------------------
Get dependencies:
```
apk update
apk add ca-certificates alpine-sdk autoconf automake git libtool \
gmp-dev sqlite-dev python python3 py3-mako net-tools zlib-dev libsodium gettext
```
Clone lightning:
```
git clone https://github.com/ElementsProject/lightning.git
cd lightning
2020-12-10 21:59:15 +01:00
git submodule update --init --recursive
2020-04-24 04:47:07 +02:00
```
Build and install:
```
./configure
make
make install
```
Clean up:
```
cd .. & & rm -rf lightning
apk del ca-certificates alpine-sdk autoconf automake git libtool \
gmp-dev sqlite python3 py3-mako net-tools zlib-dev libsodium gettext
```
2018-03-21 20:40:12 +01:00
Additional steps
--------------------
Go to [README ](https://github.com/ElementsProject/lightning/blob/master/README.md ) for more information how to create an address, add funds, connect to a node, etc.