nochowderforyou / clams

Clam Project
MIT License
62 stars 58 forks source link

Compiling fails with recent openssl versions. #323

Closed ytrezq closed 4 years ago

ytrezq commented 6 years ago

If openssl is >=1.1, then

Making all in src
make[1]: Entering directory '/home/example/clams/src'
make[2]: Entering directory '/home/example/clams/src'
  CXX      libbitcoin_util_a-util.o
In file included from chainparams.h:9:0,
                 from util.cpp:8:
bignum.h:57: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:13,
                 from chainparams.h:9,
                 from util.cpp:8:
/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 chainparams.h:9:0,
                 from util.cpp:8:
bignum.h: In constructor ‘CBigNum::CBigNum()’:
bignum.h:62:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:62:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h: In copy constructor ‘CBigNum::CBigNum(const CBigNum&)’:
bignum.h:67:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:67:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h:68: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:70: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:77: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:84: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:88:37: 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:88:37: note: suggested alternative: ‘BN_print’
     CBigNum(signed char n)        { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(short int)’:
bignum.h:89:37: 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:89:37: note: suggested alternative: ‘BN_print’
     CBigNum(short n)              { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(int)’:
bignum.h:90:37: 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:90:37: note: suggested alternative: ‘BN_print’
     CBigNum(int n)                { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(long int)’:
bignum.h:91:37: 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:91:37: note: suggested alternative: ‘BN_print’
     CBigNum(long n)               { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(long long int)’:
bignum.h:92:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(long long n)          { BN_init(this); setint64(n); }
                                     ^~~~~~~
bignum.h:92:37: note: suggested alternative: ‘BN_print’
     CBigNum(long long n)          { BN_init(this); setint64(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(unsigned char)’:
bignum.h:93:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned char n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:93:37: note: suggested alternative: ‘BN_print’
     CBigNum(unsigned char n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(short unsigned int)’:
bignum.h:94:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned short n)     { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:94:37: note: suggested alternative: ‘BN_print’
     CBigNum(unsigned short n)     { BN_init(this); setulong(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(unsigned int)’:
bignum.h:95:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned int n)       { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:95:37: note: suggested alternative: ‘BN_print’
     CBigNum(unsigned int n)       { BN_init(this); setulong(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(long unsigned int)’:
bignum.h:96:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned long n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:96:37: note: suggested alternative: ‘BN_print’
     CBigNum(unsigned long n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(long long unsigned int)’:
bignum.h:97:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned long long n) { BN_init(this); setuint64(n); }
                                     ^~~~~~~
bignum.h:97:37: note: suggested alternative: ‘BN_print’
     CBigNum(unsigned long long n) { BN_init(this); setuint64(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(uint256)’:
bignum.h:98:37: error: ‘BN_init’ was not declared in this scope
     explicit CBigNum(uint256 n)   { BN_init(this); setuint256(n); }
                                     ^~~~~~~
bignum.h:98:37: note: suggested alternative: ‘BN_print’
     explicit CBigNum(uint256 n)   { BN_init(this); setuint256(n); }
                                     ^~~~~~~
                                     BN_print
bignum.h: In constructor ‘CBigNum::CBigNum(const std::vector<unsigned char>&)’:
bignum.h:102:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:102:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h: In static member function ‘static CBigNum CBigNum::randBignum(const CBigNum&)’:
bignum.h:113:39: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_rand_range(BIGNUM*, const BIGNUM*)’
         if(!BN_rand_range(&ret, &range)){
                                       ^
bignum.h: In static member function ‘static CBigNum CBigNum::RandKBitBigum(uint32_t)’:
bignum.h:125:35: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_rand(BIGNUM*, int, int, int)’
         if(!BN_rand(&ret, k, -1, 0)){
                                   ^
bignum.h: In member function ‘int CBigNum::bitSize() const’:
bignum.h:136:33: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_num_bits(const BIGNUM*)’
         return  BN_num_bits(this);
                                 ^
bignum.h: In member function ‘void CBigNum::setulong(long unsigned int)’:
bignum.h:142: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:148: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:153: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:158: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:159: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 chainparams.h:9:0,
                 from util.cpp:8:
bignum.h: In member function ‘void CBigNum::setint64(int64_t)’:
bignum.h:205: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 ‘uint64_t CBigNum::getuint64()’:
bignum.h:210:50: error: cannot convert ‘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:214:32: error: cannot convert ‘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::setuint64(uint64_t)’:
bignum.h:247: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:275: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:280: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:284: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:306: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:311: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:315: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:329:44: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘3’ to ‘BIGNUM* BN_mpi2bn(const unsigned char*, int, BIGNUM*)’
         BN_mpi2bn(&vch[0], vch.size(), this);
                                            ^
bignum.h: In member function ‘unsigned int CBigNum::GetCompact() const’:
bignum.h:335: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:338: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 ‘std::__cxx11::string CBigNum::ToString(int) const’:
bignum.h:383: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:386: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:388: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:390: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:396: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 ‘CBigNum CBigNum::pow(const CBigNum&) const’:
bignum.h:443:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_exp(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
         if (!BN_exp(&ret, this, &e, pctx))
                                         ^
bignum.h: In member function ‘CBigNum CBigNum::mul_mod(const CBigNum&, const CBigNum&) const’:
bignum.h:456:49: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mod_mul(BIGNUM*, const BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
         if (!BN_mod_mul(&ret, this, &b, &m, pctx))
                                                 ^
bignum.h: In member function ‘CBigNum CBigNum::pow_mod(const CBigNum&, const CBigNum&) const’:
bignum.h:474:56: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mod_exp(BIGNUM*, const BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
             if (!BN_mod_exp(&ret, &inv, &posE, &m, pctx))
                                                        ^
bignum.h:477:53: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_mod_exp(BIGNUM*, const BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
             if (!BN_mod_exp(&ret, this, &e, &m, pctx))
                                                     ^
bignum.h: In member function ‘CBigNum CBigNum::inverse(const CBigNum&) const’:
bignum.h:492:49: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘BIGNUM* BN_mod_inverse(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
         if (!BN_mod_inverse(&ret, this, &m, pctx))
                                                 ^
bignum.h: In static member function ‘static CBigNum CBigNum::generatePrime(unsigned int, bool)’:
bignum.h:505:81: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_generate_prime_ex(BIGNUM*, int, int, const BIGNUM*, const BIGNUM*, BN_GENCB*)’
         if(!BN_generate_prime_ex(&ret, numBits, (safe == true), NULL, NULL, NULL))
                                                                                 ^
bignum.h: In member function ‘CBigNum CBigNum::gcd(const CBigNum&) const’:
bignum.h:518:41: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_gcd(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
         if (!BN_gcd(&ret, this, &b, pctx))
                                         ^
bignum.h: In member function ‘bool CBigNum::isPrime(int) const’:
bignum.h:531:61: warning: ‘int BN_is_prime(const BIGNUM*, int, void (*)(int, int, void*), BN_CTX*, void*)’ is deprecated [-Wdeprecated-declarations]
         int ret = BN_is_prime(this, checks, NULL, pctx, NULL);
                                                             ^
In file included from /usr/include/openssl/crypto.h:32:0,
                 from /usr/include/openssl/bn.h:33,
                 from bignum.h:13,
                 from chainparams.h:9,
                 from util.cpp:8:
/usr/include/openssl/bn.h:291:1: note: declared here
 DEPRECATEDIN_0_9_8(int
 ^
In file included from chainparams.h:9:0,
                 from util.cpp:8:
bignum.h:531:61: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_prime(const BIGNUM*, int, void (*)(int, int, void*), BN_CTX*, void*)’
         int ret = BN_is_prime(this, checks, NULL, pctx, NULL);
                                                             ^
bignum.h: In member function ‘bool CBigNum::isOne() const’:
bignum.h:539:30: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_is_one(const BIGNUM*)’
         return BN_is_one(this);
                              ^
bignum.h: In member function ‘bool CBigNum::operator!() const’:
bignum.h:545: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:550: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:564: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:583: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:594: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:600: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:609: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:626: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:653: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:661: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:669: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:677: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:686: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))
                                       ^
bignum.h: In function ‘const CBigNum operator%(const CBigNum&, const CBigNum&)’:
bignum.h:695:35: error: cannot convert ‘CBigNum*’ to ‘BIGNUM* {aka bignum_st*}’ for argument ‘1’ to ‘int BN_nnmod(BIGNUM*, const BIGNUM*, const BIGNUM*, BN_CTX*)’
     if (!BN_nnmod(&r, &a, &b, pctx))
                                   ^
bignum.h: In function ‘const CBigNum operator<<(const CBigNum&, unsigned int)’:
bignum.h:703: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:715: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:716: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:717: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:718: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:719: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:720: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); }
                                                                                   ^
util.cpp: In function ‘void runCommand(std::__cxx11::string)’:
util.cpp:1345:1: error: expected primary-expression before ‘}’ token
 }
 ^
Makefile:2658: recipe for target 'libbitcoin_util_a-util.o' failed
make[2]: *** [libbitcoin_util_a-util.o] Error 1
make[2]: Leaving directory '/home/example/clams/src'
Makefile:4215: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/example/clams/src'
Makefile:558: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

This seems to concern all files using openssl. Other projects like EOS or bitshares are facing similar issues because of openssl versions.

daxxog commented 5 years ago

Can confirm, I am running into the same problem when trying to compile on Raspbian. Trying to statically link and older version of openssl right now.

nemetz commented 5 years ago

Other coins had the same issue, as the version of openssl bitcoin used is too old. Upgrading the version of openssl used or removing it fixes the problem, as downgrading openssl in the machine building this CLAM version

https://github.com/vertcoin-project/vertcoin-core/issues/43 https://github.com/reddcoin-project/reddcoin/issues/103

Vertcoin made a commit to remove it here: https://github.com/vertcoin-project/vertcoin-core/commit/5522e0ce9c9070ae8c536a8366e5a5d0316ca48d

I tried to apply it in the CLAM client, but it gives me other errors as this commit is based on files that already had another changes that CLAM did not

daxxog commented 5 years ago

I found this post helpful on the FeatherCoin project: https://github.com/FeatherCoin/Feathercoin/issues/177#issuecomment-359871623

I now have been able to successfully compile the CLAM client on Raspberry PI 3!

nemetz commented 5 years ago

Looks like commit https://github.com/nochowderforyou/clams/commit/6dcf37e11a5ea82b8677d742cdb764bbac76d6bf fixed this issue, can anyone confirm?

dooglus commented 5 years ago

It needs testing, but that was indeed the point of the commit.

The 2.1.0 branch seems pretty stable to me, but I wouldn't recommend risking significant funds to it just yet.

abmohan commented 5 years ago

@dooglus the last time I built the project from source was in late 2016. I just tried again on a difference branch, and am getting the error cited above.

Both times I built from the master branch. Which branch is the most stable? You mentioned that 2.1.0 may not be 100% production ready

abmohan commented 5 years ago

If anyone else still has this issue, I was able to resolve it by running: sudo apt-get install libssl1.0-dev on Ubuntu 18.04before runningsudo make`

l0rdicon commented 4 years ago

Closing issue

ytrezq commented 4 years ago

@l0rdicon doesn t works for RedHat based distros like Archlinux and Fedora. Please reopen and update the code to work with the new api!