From 1d3229e6bcd46ed559ffab5ac193dac77868137e Mon Sep 17 00:00:00 2001 From: "Andreas M. Antonopoulos" Date: Sun, 9 Feb 2014 11:11:10 -0600 Subject: [PATCH] ch3 compile finished --- ch03.asciidoc | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/ch03.asciidoc b/ch03.asciidoc index 46f5508a..a1b88841 100644 --- a/ch03.asciidoc +++ b/ch03.asciidoc @@ -90,6 +90,11 @@ The source code includes documentation, which can be found in a number of files. Carefully review the build pre-requisited which are in the first part of the build documentation. These are libraries that must be present on your system before you can begin to compile bitcoin. If these pre-requisites are missing the build process will fail with an error. If this happens because you missed a pre-requisite, you can install it and then resume the build process from where you left off. Assuming the pre-requisites are installed, we start the build process by generating a set of build scripts using the +autogen.sh+ script. +[TIP] +==== +The bitcoind build process was changed to use the autogen/configure/make system starting with version 0.9. Older versions use a simple Makefile and work slightly differently from the example below. Follow the instructions for the version you want to compile. The autogen/configure/make introduced in 0.9 is likely to be the build system used for all future versions of the code and is the system demonstrated in the examples below. +==== + ---- $ ./autogen.sh configure.ac:12: installing `src/build-aux/config.guess' @@ -100,6 +105,111 @@ src/Makefile.am: installing `src/build-aux/depcomp' $ ---- +The +autogen.sh+ script creates a set of automatic configuation scripts that will interrogate your system to discover the correct settings and ensure you have all the necessary libraries to compile the code. The most important of these is the +configure+ script that offers a number of different options to customize the build process. Type +./configure --help+ to see the various options: + +---- +$ ./configure --help + +`configure' configures Bitcoin Core 0.9.0 to adapt to many kinds of systems. + +Usage: ./configure [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + +[... many more options and variables are displayed below ...] + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + +[... more options ...] + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . + +$ +---- + +The +configure+ script allows you to enable or disable certain features of bitcoind through the use of the +--enable-FEATURE+ and +--disable-FEATURE+ flags, where +FEATURE+ is replaced byt he feature name, as listed in the help output above. In this chapter, we will build the bitcoind client with all the default features, so we won't be using these flags, but you should review them to understand what optional features are part of the client. Next, we run the +configure+ script to automatically discover all the necessary libraries and create a customized build script for our system: + +---- +$ ./configure +checking build system type... x86_64-unknown-linux-gnu +checking host system type... x86_64-unknown-linux-gnu +checking for a BSD-compatible install... /usr/bin/install -c +checking whether build environment is sane... yes +checking for a thread-safe mkdir -p... /bin/mkdir -p +checking for gawk... no +checking for mawk... mawk +checking whether make sets $(MAKE)... yes + +[... many more system features are tested ...] + +configure: creating ./config.status +config.status: creating Makefile +config.status: creating src/Makefile +config.status: creating src/test/Makefile +config.status: creating src/qt/Makefile +config.status: creating src/qt/test/Makefile +config.status: creating share/setup.nsi +config.status: creating share/qt/Info.plist +config.status: creating qa/pull-tester/run-bitcoind-for-test.sh +config.status: creating qa/pull-tester/build-tests.sh +config.status: creating src/bitcoin-config.h +config.status: executing depfiles commands +$ +---- + +If all goes well, the +configure+ command will end by creating the customized build scripts that will allow us to compile bitcoind. If there are any missing libraries or errors, the +configure+ command will terminate with an error instead of creating the build scripts as shown above. If an error occurs, it is most likely a missing or incompatible library. Review the build documentation again and make sure you install the missing pre-requisites, then run +configure+ again and see if that fixes the error. Next, we will compile the source code, a process that can take up to an hour to complete. During the compilation process you should see output every few seconds or every few minutes, or an error if something goes wrong. The compilation process can be resumed at any time if interrupted. Type +make+ to start compiling: + +---- +$ make +Making all in src +make[1]: Entering directory `/home/ubuntu/bitcoin/src' +make all-recursive +make[2]: Entering directory `/home/ubuntu/bitcoin/src' +Making all in . +make[3]: Entering directory `/home/ubuntu/bitcoin/src' + CXX addrman.o + CXX alert.o + CXX rpcserver.o + CXX bloom.o + CXX chainparams.o + +[... many more compilation messages follow ...] + + CXX test_bitcoin-wallet_tests.o + CXX test_bitcoin-rpc_wallet_tests.o + CXXLD test_bitcoin +make[4]: Leaving directory `/home/ubuntu/bitcoin/src/test' +make[3]: Leaving directory `/home/ubuntu/bitcoin/src/test' +make[2]: Leaving directory `/home/ubuntu/bitcoin/src' +make[1]: Leaving directory `/home/ubuntu/bitcoin/src' +make[1]: Entering directory `/home/ubuntu/bitcoin' +make[1]: Nothing to be done for `all-am'. +make[1]: Leaving directory `/home/ubuntu/bitcoin' +$ +---- + + + + + + + +