2022-03-23 12:33:50 -03:00
# OpenBSD Build Guide
2015-09-28 06:24:23 -03:00
2024-04-23 18:56:18 -04:00
**Updated for OpenBSD [7.5 ](https://www.openbsd.org/75.html )**
2015-09-28 06:24:23 -03:00
2022-03-23 12:33:50 -03:00
This guide describes how to build bitcoind, command-line utilities, and GUI on OpenBSD.
2015-09-28 06:24:23 -03:00
2022-03-23 12:33:50 -03:00
## Preparation
### 1. Install Required Dependencies
Run the following as root to install the base dependencies for building.
2015-09-28 06:24:23 -03:00
```bash
2022-03-23 12:33:50 -03:00
pkg_add bash git gmake libevent libtool boost
2022-04-06 05:43:50 -04:00
# Select the newest version of the following packages:
2022-03-23 12:33:50 -03:00
pkg_add autoconf automake python
```
2017-10-02 23:15:55 -03:00
2022-03-23 12:33:50 -03:00
See [dependencies.md ](dependencies.md ) for a complete overview.
### 2. Clone Bitcoin Repo
Clone the Bitcoin Core repository to a directory. All build scripts and commands will run from this directory.
``` bash
2017-10-02 23:15:55 -03:00
git clone https://github.com/bitcoin/bitcoin.git
2015-09-28 06:24:23 -03:00
```
2022-03-23 12:33:50 -03:00
### 3. Install Optional Dependencies
2015-09-28 06:24:23 -03:00
2022-03-23 12:33:50 -03:00
#### Wallet Dependencies
2015-09-28 06:24:23 -03:00
2022-03-23 12:33:50 -03:00
It is not necessary to build wallet functionality to run either `bitcoind` or `bitcoin-qt` .
###### Descriptor Wallet Support
`sqlite3` is required to support [descriptor wallets ](descriptors.md ).
``` bash
2022-06-07 17:04:20 -04:00
pkg_add sqlite3
2022-03-23 12:33:50 -03:00
```
2015-09-28 06:24:23 -03:00
2022-03-23 12:33:50 -03:00
###### Legacy Wallet Support
BerkeleyDB is only required to support legacy wallets.
2015-09-28 06:24:23 -03:00
2017-11-16 01:26:02 -03:00
It is recommended to use Berkeley DB 4.8. You cannot use the BerkeleyDB library
2023-01-06 06:14:02 -03:00
from ports. However you can build it yourself, [using depends ](/depends ).
2015-09-28 06:24:23 -03:00
2024-02-26 11:32:52 -03:00
Refer to [depends/README.md ](/depends/README.md ) for detailed instructions.
2020-02-12 15:16:39 -03:00
```bash
2023-01-06 06:14:02 -03:00
gmake -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_NATPMP=1 NO_UPNP=1 NO_ZMQ=1 NO_USDT=1
...
to: /path/to/bitcoin/depends/x86_64-unknown-openbsd
2015-09-28 06:24:23 -03:00
```
2022-03-23 12:33:50 -03:00
Then set `BDB_PREFIX` :
2016-08-26 11:26:09 -03:00
2020-02-12 15:16:39 -03:00
```bash
2023-01-06 06:14:02 -03:00
export BDB_PREFIX="/path/to/bitcoin/depends/x86_64-unknown-openbsd"
2017-12-22 05:44:32 -03:00
```
2016-08-26 11:26:09 -03:00
2022-03-23 12:33:50 -03:00
#### GUI Dependencies
###### Qt5
Bitcoin Core includes a GUI built with the cross-platform Qt Framework. To compile the GUI, Qt 5 is required.
```bash
2024-04-23 18:56:18 -04:00
pkg_add qtbase qttools
2022-03-23 12:33:50 -03:00
```
2024-07-30 16:27:06 -04:00
###### libqrencode
The GUI can encode addresses in a QR Code. To build in QR support for the GUI, install `libqrencode` . Skip if not using the GUI or don't want QR code functionality.
```bash
pkg_add libqrencode
```
---
#### Notifications
###### ZeroMQ
Bitcoin Core can provide notifications via ZeroMQ. If the package is installed, support will be compiled in.
```bash
pkg_add zeromq
```
2022-03-23 12:33:50 -03:00
## Building Bitcoin Core
2015-09-28 06:24:23 -03:00
2020-02-12 15:16:39 -03:00
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
2015-09-28 06:24:23 -03:00
Preparation:
```bash
2018-05-21 10:43:04 -04:00
2022-03-23 12:33:50 -03:00
# Adapt the following for the version you installed (major.minor only):
export AUTOCONF_VERSION=2.71
2018-10-19 01:15:25 -03:00
export AUTOMAKE_VERSION=1.16
2018-05-21 10:43:04 -04:00
2015-09-28 06:24:23 -03:00
./autogen.sh
```
2022-03-23 12:33:50 -03:00
### 1. Configuration
2015-09-28 06:24:23 -03:00
2022-03-23 12:33:50 -03:00
There are many ways to configure Bitcoin Core, here are a few common examples:
##### Descriptor Wallet and GUI:
This enables the GUI and descriptor wallet support, assuming `sqlite` and `qt5` are installed.
2015-09-28 06:24:23 -03:00
```bash
2022-05-20 09:34:13 -04:00
./configure MAKE=gmake
2015-09-28 06:24:23 -03:00
```
2022-03-23 12:33:50 -03:00
##### Descriptor & Legacy Wallet. No GUI:
This enables support for both wallet types and disables the GUI:
2020-09-06 23:16:57 -03:00
```bash
2022-05-20 09:34:13 -04:00
./configure --with-gui=no \
2020-09-06 23:16:57 -03:00
BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" \
BDB_CFLAGS="-I${BDB_PREFIX}/include" \
MAKE=gmake
```
2022-03-23 12:33:50 -03:00
### 2. Compile
**Important**: Use `gmake` (the non-GNU `make` will exit with an error).
2015-09-28 06:24:23 -03:00
```bash
2022-03-23 12:33:50 -03:00
gmake # use "-j N" for N parallel jobs
gmake check # Run tests if Python 3 is available
2015-09-28 06:24:23 -03:00
```
2022-03-23 12:33:50 -03:00
## Resource limits
2015-09-28 06:24:23 -03:00
2017-12-22 05:44:32 -03:00
If the build runs into out-of-memory errors, the instructions in this section
might help.
The standard ulimit restrictions in OpenBSD are very strict:
2022-03-23 12:33:50 -03:00
```bash
data(kbytes) 1572864
```
2017-12-22 05:44:32 -03:00
2018-10-25 16:58:08 -03:00
This is, unfortunately, in some cases not enough to compile some `.cpp` files in the project,
2017-12-22 05:44:32 -03:00
(see issue [#6658 ](https://github.com/bitcoin/bitcoin/issues/6658 )).
If your user is in the `staff` group the limit can be raised with:
2022-03-23 12:33:50 -03:00
```bash
ulimit -d 3000000
```
2017-12-22 05:44:32 -03:00
The change will only affect the current shell and processes spawned by it. To
make the change system-wide, change `datasize-cur` and `datasize-max` in
`/etc/login.conf` , and reboot.