bitcoin/doc/dependencies.md
fanquake dbfca4a815
build: require glibc 2.18+ for release builds
From what I can see the only platform this drops support for is CentOS
7. CentOS 7 reached the end of it's "full update" support at the end of
2020. It does receive maintenance updates until 2024, however I don't
think supporting glibc 2.17 until 2024 is realistic. Note that anyone
wanting to self-compile and target a glibc 2.17 runtime could build with
--disable-threadlocal.

glibc 2.18 was released in August 2013.
https://sourceware.org/legacy-ml/libc-alpha/2013-08/msg00160.html
2021-11-16 07:51:24 +08:00

3.9 KiB

Dependencies

These are the dependencies currently used by Bitcoin Core. You can find instructions for installing them in the build-*.md file for your platform.

Dependency Version used Minimum required CVEs Shared Bundled Qt library
Berkeley DB 4.8.30 4.8.x No
Boost 1.71.0 1.64.0 No
Clang * 7.0 (C++17 & std::filesystem support)
Expat 2.2.7 No Yes
fontconfig 2.12.1 No Yes
FreeType 2.7.1 No Yes (Android only)
GCC 8.1 (C++17 & std::filesystem support)
glibc 2.18
HarfBuzz-NG Yes
libevent 2.1.12-stable 2.0.21 No
libnatpmp git commit 4536032... No
libpng Yes
librsvg
MiniUPnPc 2.2.2 No
PCRE Yes
Python (tests) 3.6
qrencode 3.4.4 No
Qt 5.12.11 5.9.5 No
SQLite 3.32.1 3.7.17
XCB Yes (Linux only)
systemtap (tracing)
xkbcommon Yes (Linux only)
ZeroMQ 4.3.1 4.0.0 No
zlib Yes

Note * : When compiling with -stdlib=libc++, the minimum supported libc++ version is 7.0.

Controlling dependencies

Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list.

Options passed to ./configure

  • MiniUPnPc is not needed with --without-miniupnpc.
  • libnatpmp is not needed with --without-natpmp.
  • Berkeley DB is not needed with --disable-wallet or --without-bdb.
  • SQLite is not needed with --disable-wallet or --without-sqlite.
  • Qt is not needed with --without-gui.
  • If the qrencode dependency is absent, QR support won't be added. To force an error when that happens, pass --with-qrencode.
  • If the systemtap dependency is absent, USDT support won't compiled in.
  • ZeroMQ is needed only with the --with-zmq option.

Other

  • librsvg is only needed if you need to run make deploy on (cross-compilation to) macOS.
  • Not-Qt-bundled zlib is required to build the DMG tool from the libdmg-hfsplus project.