1
I have recently set up a new machine on debian stretch:
$ uname -a
Linux front 4.8.0-1-amd64 #1 SMP Debian 4.8.7-1 (2016-11-13) x86_64 GNU/Linux
I am now attempting to install bitcoind. I have already set up a directory db4 in my build directory for the Berkeley database version 4.8.30. I have installed all the dependencies as per doc/build-unix, including boost from the distribution:
$ sudo apt-get install libboost-all-dev
$ apt-cache show libboost-all-dev
Package: libboost-all-dev
Source: boost-defaults
Version: 1.62.0.1
...
$ ./autogen.sh
...
$ ./configure LDFLAGS="-L..bitcoin/db4/lib/" CPPFLAGS="-I..bitcoin/db4/include/"
...
$ make
...
CXX wallet/test/test_test_bitcoin-wallet_tests.o
CXX wallet/test/test_test_bitcoin-crypto_tests.o
wallet/test/crypto_tests.cpp: In function ‘bool wallet_crypto::OldEncrypt(
const CKeyingMaterial&, std::vector<unsigned char>&, const unsigned
char*, const unsigned char*)’:
wallet/test/crypto_tests.cpp:45:20: error: aggregate ‘EVP_CIPHER_CTX ctx’
has incomplete type and cannot be defined
EVP_CIPHER_CTX ctx;
^~~
wallet/test/crypto_tests.cpp: In function ‘bool wallet_crypto::OldDecrypt(
const std::vector<unsigned char>&, CKeyingMaterial&, const unsigned
char*, const unsigned char*)’:
wallet/test/crypto_tests.cpp:69:20: error: aggregate ‘EVP_CIPHER_CTX ctx’
has incomplete type and cannot be defined
EVP_CIPHER_CTX ctx;
^~~
Makefile:8232: recipe for target 'wallet/test/test_test_bitcoin
crypto_tests.o' failed
make[2]: *** [wallet/test/test_test_bitcoin-crypto_tests.o] Error 1
make[2]: Leaving directory '/home/john/Libs/bitcoin/src'
Makefile:8370: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/john/Libs/bitcoin/src'
Makefile:680: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
Any suggestion is gratefully appreciated.
EDIT: adding the option --disable-wallet to configure leads to a successful build.
EDIT2: however, even with the --disable-wallet , the command make check fails with:
make[4]: Entering directory '/home/john/Libs/bitcoin/src/secp256k1'
CC src/tests-tests.o
src/tests.c: In function ‘test_ecdsa_der_parse’:
src/tests.c:3561:52: error: dereferencing pointer to incomplete type
‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
valid_openssl = !BN_is_negative(sig_openssl->r) &&
!BN_is_negative(sig_openssl->s) && BN_num_bits(sig_openssl->r) > 0 &&
BN_num_bits(sig_openssl->r) <= 256 && BN_num_bits(sig_openssl->s) > 0 &&
BN_num_bits(sig_openssl->s) <= 256;
This error relating to the C library secp256k1 on debian stretch has already been reported on this post and it seems to be related to some openssl API change (a work around put forward by Andrew Poelstra is to configure secp256k1 with the option --enable-openssl-tests=no. However, this is not an option available for bitcoind configuration)
I had to make changes to the file
src/qt/paymentrequestplus.cppsimilar to those ofsrc/wallet/test/crypto_tests.cppin order for it to compile. – Sven Williamson – 2016-12-12T14:53:03.250Good point, wasn't aware that you are compiling with the GUI. – Jonas Schnelli – 2016-12-12T15:03:58.550
Otherwise the build is successful (albeit with the remaining
secp256k1error). – Sven Williamson – 2016-12-12T15:08:46.990This is now fixed in the master branch of bitcoin core – Jonas Schnelli – 2016-12-15T07:58:59.447
Yes, master branch builds perfectly.
make checksuccessful. Thank you ! – Sven Williamson – 2016-12-16T20:06:45.970