Library structure

Bitcoin Core compilation outputs a number of libraries, some which are designed to be used internally, and some which are designed to be re-used by external applications. The internally-used libraries generally have unstable APIs making them unsuitable for re-use, but libbitcoin_kernel (still a WIP) is designed to be re-used by external applications.

Bitcoin Core has a guide which describes the various libraries, their conventions, and their various dependencies.

bitcoion lib dependencies
Figure 1. Bitcoin library dependency graph

Dependency graph. Arrows show linker symbol dependencies. libbitcoin_crypto depends on nothing and is fundamental. libbitcoin_util depends on crypto. libbitcoinkernel (experimental kernel library) depends only on crypto.

It follows that API changes to the libraries which are internally-facing can be done slightly easier than for libraries with externally-facing APIs, for which more care for compatibility must be taken.