The wallet fails to build on Ubuntu 16.04. (see error below)
Looks like this is related to the boost version but not sure 100%
g++ -c -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-unused-variable -g -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS=64 -I/shared-storage/cryptocoin/maxcoin/src -I/shared-storage/cryptocoin/maxcoin/src/obj -I/shared-storage/cryptocoin/maxcoin/src -I/shared-storage/cryptocoin/maxcoin/src/obj -DUSE_UPNP=0 -DUSE_IPV6=1 -I/shared-storage/cryptocoin/maxcoin/src/leveldb/include -I/shared-storage/cryptocoin/maxcoin/src/leveldb/helpers -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2 -MMD -MF obj/checkpoints.d -o obj/checkpoints.o checkpoints.cpp In file included from main.h:8:0, from checkpoints.cpp:10: bignum.h:51:24: error: invalid use of incomplete type ‘BIGNUM {aka struct bignum_st}’ class CBigNum : public BIGNUM ^ In file included from /usr/include/openssl/bn.h:32:0, from bignum.h:10, from main.h:8, from checkpoints.cpp:10: /usr/include/openssl/ossl_typ.h:80:16: note: forward declaration of ‘BIGNUM {aka struct bignum_st}’ typedef struct bignum_st BIGNUM; ^ In file included from main.h:8:0, from checkpoints.cpp:10: bignum.h: In constructor ‘CBigNum::CBigNum()’: bignum.h:56:21: error: ‘BN_init’ was not declared in this scope BN_init(this); ^ bignum.h: In copy constructor ‘CBigNum::CBigNum(const CBigNum&)’: bignum.h:61:21: error: ‘BN_init’ was not declared in this scope BN_init(this); ^ bignum.h:62:30: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘BIGNUM* BN_copy(BIGNUM*, const BIGNUM*)’ if (!BN_copy(this, &b)) ^ bignum.h:64:31: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘void BN_clear_free(BIGNUM*)’ BN_clear_free(this); ^ bignum.h: In member function ‘CBigNum& CBigNum::operator=(const CBigNum&)’: bignum.h:71:30: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘BIGNUM* BN_copy(BIGNUM*, const BIGNUM*)’ if (!BN_copy(this, &b)) ^ bignum.h: In destructor ‘CBigNum::~CBigNum()’: bignum.h:78:27: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘void BN_clear_free(BIGNUM*)’ BN_clear_free(this); ^ bignum.h: In constructor ‘CBigNum::CBigNum(signed char)’: bignum.h:82:47: error: ‘BN_init’ was not declared in this scope CBigNum(signed char n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(short int)’: bignum.h:83:47: error: ‘BN_init’ was not declared in this scope CBigNum(short n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(int)’: bignum.h:84:47: error: ‘BN_init’ was not declared in this scope CBigNum(int n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(long int)’: bignum.h:85:47: error: ‘BN_init’ was not declared in this scope CBigNum(long n) { BN_init(this); if (n >= 0) setulong(n); else setint64(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(int64)’: bignum.h:86:47: error: ‘BN_init’ was not declared in this scope CBigNum(int64 n) { BN_init(this); setint64(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(unsigned char)’: bignum.h:87:47: error: ‘BN_init’ was not declared in this scope CBigNum(unsigned char n) { BN_init(this); setulong(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(short unsigned int)’: bignum.h:88:47: error: ‘BN_init’ was not declared in this scope CBigNum(unsigned short n) { BN_init(this); setulong(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(unsigned int)’: bignum.h:89:47: error: ‘BN_init’ was not declared in this scope CBigNum(unsigned int n) { BN_init(this); setulong(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(long unsigned int)’: bignum.h:90:47: error: ‘BN_init’ was not declared in this scope CBigNum(unsigned long n) { BN_init(this); setulong(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(uint64)’: bignum.h:91:47: error: ‘BN_init’ was not declared in this scope CBigNum(uint64 n) { BN_init(this); setuint64(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(uint256)’: bignum.h:92:47: error: ‘BN_init’ was not declared in this scope explicit CBigNum(uint256 n) { BN_init(this); setuint256(n); } ^ bignum.h: In constructor ‘CBigNum::CBigNum(const std::vector<unsigned char>&)’: bignum.h:96:21: error: ‘BN_init’ was not declared in this scope BN_init(this); ^ bignum.h: In member function ‘void CBigNum::setulong(long unsigned int)’: bignum.h:102:33: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_set_word(BIGNUM*, long unsigned int)’ if (!BN_set_word(this, n)) ^ bignum.h: In member function ‘long unsigned int CBigNum::getulong() const’: bignum.h:108:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’ return BN_get_word(this); ^ bignum.h: In member function ‘unsigned int CBigNum::getuint() const’: bignum.h:113:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’ return BN_get_word(this); ^ bignum.h: In member function ‘int CBigNum::getint() const’: bignum.h:118:43: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’ unsigned long n = BN_get_word(this); ^ bignum.h:119:33: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_negative(const BIGNUM*)’ if (!BN_is_negative(this)) ^ In file included from main.h:8:0, from checkpoints.cpp:10: bignum.h: In member function ‘void CBigNum::setint64(int64)’: bignum.h:167:37: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’ BN_mpi2bn(pch, p - pch, this); ^ bignum.h: In member function ‘void CBigNum::setuint64(uint64)’: bignum.h:194:37: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’ BN_mpi2bn(pch, p - pch, this); ^ bignum.h: In member function ‘void CBigNum::setuint256(uint256)’: bignum.h:222:37: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’ BN_mpi2bn(pch, p - pch, this); ^ bignum.h: In member function ‘uint256 CBigNum::getuint256() const’: bignum.h:227:50: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’ unsigned int nSize = BN_bn2mpi(this, NULL); ^ bignum.h:231:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’ BN_bn2mpi(this, &vch[0]); ^ bignum.h: In member function ‘void CBigNum::setvch(const std::vector<unsigned char>&)’: bignum.h:252:46: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’ BN_mpi2bn(&vch2[0], vch2.size(), this); ^ bignum.h: In member function ‘std::vector<unsigned char> CBigNum::getvch() const’: bignum.h:257:50: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’ unsigned int nSize = BN_bn2mpi(this, NULL); ^ bignum.h:261:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_bn2mpi(const BIGNUM*, unsigned char*)’ BN_bn2mpi(this, &vch[0]); ^ bignum.h: In member function ‘CBigNum& CBigNum::SetCompact(unsigned int)’: bignum.h:297:36: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_set_word(BIGNUM*, long unsigned int)’ BN_set_word(this, nWord); ^ bignum.h:301:36: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_set_word(BIGNUM*, long unsigned int)’ BN_set_word(this, nWord); ^ bignum.h:302:46: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_lshift(BIGNUM*, const BIGNUM*, int)’ BN_lshift(this, this, 8*(nSize-3)); ^ bignum.h:304:40: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘void BN_set_negative(BIGNUM*, int)’ BN_set_negative(this, fNegative); ^ In file included from bignum.h:10:0, from main.h:8, from checkpoints.cpp:10: bignum.h: In member function ‘unsigned int CBigNum::GetCompact() const’: bignum.h:310:30: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_num_bits(const BIGNUM*)’ unsigned int nSize = BN_num_bytes(this); ^ In file included from main.h:8:0, from checkpoints.cpp:10: bignum.h:313:40: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’ nCompact = BN_get_word(this) << 8*(3-nSize); ^ bignum.h:317:45: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_rshift(BIGNUM*, const BIGNUM*, int)’ BN_rshift(&bn, this, 8*(nSize-3)); ^ bignum.h:318:39: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘long unsigned int BN_get_word(const BIGNUM*)’ nCompact = BN_get_word(&bn); ^ bignum.h:328:41: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_negative(const BIGNUM*)’ nCompact |= (BN_is_negative(this) ? 0x00800000 : 0); ^ In file included from main.h:8:0, from checkpoints.cpp:10: bignum.h: In member function ‘std::__cxx11::string CBigNum::ToString(int) const’: bignum.h:369:35: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘void BN_set_negative(BIGNUM*, int)’ BN_set_negative(&bn, false); ^ bignum.h:372:29: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ if (BN_cmp(&bn, &bn0) == 0) ^ bignum.h:374:32: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ while (BN_cmp(&bn, &bn0) > 0) ^ bignum.h:376:54: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_div(BIGNUM*, BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’ if (!BN_div(&dv, &rem, &bn, &bnBase, pctx)) ^ bignum.h:382:32: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_negative(const BIGNUM*)’ if (BN_is_negative(this)) ^ bignum.h: In member function ‘bool CBigNum::operator!() const’: bignum.h:415:31: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_zero(const BIGNUM*)’ return BN_is_zero(this); ^ bignum.h: In member function ‘CBigNum& CBigNum::operator+=(const CBigNum&)’: bignum.h:420:35: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_add(BIGNUM*, const BIGNUM*, const BIGNUM*)’ if (!BN_add(this, this, &b)) ^ bignum.h: In member function ‘CBigNum& CBigNum::operator*=(const CBigNum&)’: bignum.h:434:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mul(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’ if (!BN_mul(this, this, &b, pctx)) ^ bignum.h: In member function ‘CBigNum& CBigNum::operator<<=(unsigned int)’: bignum.h:453:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_lshift(BIGNUM*, const BIGNUM*, int)’ if (!BN_lshift(this, this, shift)) ^ bignum.h: In member function ‘CBigNum& CBigNum::operator>>=(unsigned int)’: bignum.h:464:28: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ if (BN_cmp(&a, this) > 0) ^ bignum.h:470:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_rshift(BIGNUM*, const BIGNUM*, int)’ if (!BN_rshift(this, this, shift)) ^ bignum.h: In member function ‘CBigNum& CBigNum::operator++()’: bignum.h:479:47: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_add(BIGNUM*, const BIGNUM*, const BIGNUM*)’ if (!BN_add(this, this, BN_value_one())) ^ bignum.h: In member function ‘CBigNum& CBigNum::operator--()’: bignum.h:496:45: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_sub(BIGNUM*, const BIGNUM*, const BIGNUM*)’ if (!BN_sub(&r, this, BN_value_one())) ^ bignum.h: In function ‘const CBigNum operator+(const CBigNum&, const CBigNum&)’: bignum.h:521:27: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_add(BIGNUM*, const BIGNUM*, const BIGNUM*)’ if (!BN_add(&r, &a, &b)) ^ bignum.h: In function ‘const CBigNum operator-(const CBigNum&, const CBigNum&)’: bignum.h:529:27: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_sub(BIGNUM*, const BIGNUM*, const BIGNUM*)’ if (!BN_sub(&r, &a, &b)) ^ bignum.h: In function ‘const CBigNum operator-(const CBigNum&)’: bignum.h:537:43: error: cannot convert ‘CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_negative(const BIGNUM*)’ BN_set_negative(&r, !BN_is_negative(&r)); ^ bignum.h: In function ‘const CBigNum operator*(const CBigNum&, const CBigNum&)’: bignum.h:545:33: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mul(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’ if (!BN_mul(&r, &a, &b, pctx)) ^ bignum.h: In function ‘const CBigNum operator/(const CBigNum&, const CBigNum&)’: bignum.h:554:39: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_div(BIGNUM*, BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’ if (!BN_div(&r, NULL, &a, &b, pctx)) ^ In file included from bignum.h:10:0, from main.h:8, from checkpoints.cpp:10: bignum.h: In function ‘const CBigNum operator%(const CBigNum&, const CBigNum&)’: bignum.h:563:10: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘2’ to ‘int BN_div(BIGNUM*, BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’ if (!BN_mod(&r, &a, &b, pctx)) ^ In file included from main.h:8:0, from checkpoints.cpp:10: bignum.h: In function ‘const CBigNum operator<<(const CBigNum&, unsigned int)’: bignum.h:571:33: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_lshift(BIGNUM*, const BIGNUM*, int)’ if (!BN_lshift(&r, &a, shift)) ^ bignum.h: In function ‘bool operator==(const CBigNum&, const CBigNum&)’: bignum.h:583:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ inline bool operator==(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) == 0); } ^ bignum.h: In function ‘bool operator!=(const CBigNum&, const CBigNum&)’: bignum.h:584:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ inline bool operator!=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) != 0); } ^ bignum.h: In function ‘bool operator<=(const CBigNum&, const CBigNum&)’: bignum.h:585:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ inline bool operator<=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) <= 0); } ^ bignum.h: In function ‘bool operator>=(const CBigNum&, const CBigNum&)’: bignum.h:586:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ inline bool operator>=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) >= 0); } ^ bignum.h: In function ‘bool operator<(const CBigNum&, const CBigNum&)’: bignum.h:587:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ inline bool operator<(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) < 0); } ^ bignum.h: In function ‘bool operator>(const CBigNum&, const CBigNum&)’: bignum.h:588:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’ inline bool operator>(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) > 0); } ^ In file included from cryptopp/pubkey.h:35:0, from cryptopp/eccrypto.h:7, from schnorr.h:12, from hash.h:17, from net.h:22, from main.h:10, from checkpoints.cpp:10: cryptopp/modarith.h: In copy constructor ‘CryptoPP::ModularArithmetic::ModularArithmetic(const CryptoPP::ModularArithmetic&)’: cryptopp/modarith.h:29:2: warning: base class ‘class CryptoPP::AbstractRing<CryptoPP::Integer>’ should be explicitly initialized in the copy constructor [-Wextra] ModularArithmetic(const ModularArithmetic &ma) ^ In file included from cryptopp/simple.h:10:0, from cryptopp/filters.h:6, from cryptopp/randpool.h:5, from cryptopp/osrng.h:10, from schnorr.h:11, from hash.h:17, from net.h:22, from main.h:10, from checkpoints.cpp:10: cryptopp/misc.h: At global scope: cryptopp/misc.h:548:20: warning: ‘std::__cxx11::string CryptoPP::StringNarrow(const wchar_t*, bool)’ defined but not used [-Wunused-function] static std::string StringNarrow(const wchar_t *str, bool throwOnError = true) ^ makefile.unix:177: recipe for target 'obj/checkpoints.o' failed make: *** [obj/checkpoints.o] Error 1