doc: Update OpenBSD build instructions for 6.2

There is no more need to install a compiler. This simplifies
instructions a lot.
This commit is contained in:
Wladimir J. van der Laan 2017-12-22 09:44:32 +01:00
parent 180a25596a
commit 6915f93cc9
1 changed files with 33 additions and 39 deletions

View File

@ -23,47 +23,31 @@ git clone https://github.com/bitcoin/bitcoin.git
See [dependencies.md](dependencies.md) for a complete overview. See [dependencies.md](dependencies.md) for a complete overview.
GCC **Important**: From OpenBSD 6.2 onwards a C++11-supporting clang compiler is
------- part of the base image, and while building it is necessary to make sure that this
compiler is used and not ancient g++ 4.2.1. This is done by appending
The default C++ compiler that comes with OpenBSD 6.2 is g++ 4.2.1. This version is old (from 2007), and is not able to compile the current version of Bitcoin Core because it has no C++11 support. We'll install a newer version of GCC: `CC=cc CXX=c++` to configuration commands. Mixing different compilers
within the same executable will result in linker errors.
```bash
pkg_add g++
```
This compiler will not overwrite the system compiler, it will be installed as `egcc` and `eg++` in `/usr/local/bin`.
### Building BerkeleyDB ### Building BerkeleyDB
BerkeleyDB is only necessary for the wallet functionality. To skip this, pass `--disable-wallet` to `./configure`. BerkeleyDB is only necessary for the wallet functionality. To skip this, pass
`--disable-wallet` to `./configure` and skip to the next section.
It is recommended to use Berkeley DB 4.8. You cannot use the BerkeleyDB library It is recommended to use Berkeley DB 4.8. You cannot use the BerkeleyDB library
from ports, for the same reason as boost above (g++/libstd++ incompatibility). from ports, for the same reason as boost above (g++/libstd++ incompatibility).
If you have to build it yourself, you can use [the installation script included If you have to build it yourself, you can use [the installation script included
in contrib/](contrib/install_db4.sh) like so in contrib/](/contrib/install_db4.sh) like so
```shell ```shell
./contrib/install_db4.sh `pwd` CC=egcc CXX=eg++ CPP=ecpp ./contrib/install_db4.sh `pwd` CC=cc CXX=c++
``` ```
from the root of the repository. from the root of the repository. Then set `BDB_PREFIX` for the next section:
### Resource limits ```shell
export BDB_PREFIX="$PWD/db4"
The standard ulimit restrictions in OpenBSD are very strict: ```
data(kbytes) 1572864
This, unfortunately, may no longer be enough to compile some `.cpp` files in the project,
at least with GCC 4.9.4 (see issue [#6658](https://github.com/bitcoin/bitcoin/issues/6658)).
If your user is in the `staff` group the limit can be raised with:
ulimit -d 3000000
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.
### Building Bitcoin Core ### Building Bitcoin Core
@ -79,13 +63,13 @@ Make sure `BDB_PREFIX` is set to the appropriate path from the above steps.
To configure with wallet: To configure with wallet:
```bash ```bash
./configure --with-gui=no CC=egcc CXX=eg++ CPP=ecpp \ ./configure --with-gui=no CC=cc CXX=c++ \
BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include" BDB_LIBS="-L${BDB_PREFIX}/lib -ldb_cxx-4.8" BDB_CFLAGS="-I${BDB_PREFIX}/include"
``` ```
To configure without wallet: To configure without wallet:
```bash ```bash
./configure --disable-wallet --with-gui=no CC=egcc CXX=eg++ CPP=ecpp ./configure --disable-wallet --with-gui=no CC=cc CXX=c++
``` ```
Build and run the tests: Build and run the tests:
@ -94,13 +78,23 @@ gmake # use -jX here for parallelism
gmake check gmake check
``` ```
Clang Resource limits
------------------------------ -------------------
```bash If the build runs into out-of-memory errors, the instructions in this section
pkg_add llvm might help.
The standard ulimit restrictions in OpenBSD are very strict:
data(kbytes) 1572864
This, unfortunately, in some cases not enough to compile some `.cpp` files in the project,
(see issue [#6658](https://github.com/bitcoin/bitcoin/issues/6658)).
If your user is in the `staff` group the limit can be raised with:
ulimit -d 3000000
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.
./configure --disable-wallet --with-gui=no CC=clang CXX=clang++
gmake # use -jX here for parallelism
gmake check
```