<p>If you ever see</p>

<pre><code>error: invalid use of incomplete type BIGNUM
</code></pre>

<p>in an error log, then it means you have OpenSSL 1.1, and the project is compatible only with OpenSSL 1.0.X. Downgrade your OpenSSL to make it work.</p>

CC BY-SA 4.0
2019-01-02T14:54:10.073Z
2019-01-02T14:54:10.073Z
MCCCS
<p>I'm not sure if this is the problem or not.  Apparently, there is a version of libssl-dev that causes some problems.  Although the steps listed on this site specify Raspbian (which is a derivative of Debian) it might be worth looking to see if this could be your problem.</p>

<p>The steps are found at <a href="https://en.wikibooks.org/wiki/Radium_Core/Raspberry_Pi" rel="nofollow noreferrer">https://en.wikibooks.org/wiki/Radium_Core/Raspberry_Pi</a>.</p>

CC BY-SA 4.0
2018-11-11T02:19:16.373Z
2018-11-11T02:19:16.373Z
Jim Baize
<p>I am trying to configure the bitcoin core build , as I use <code>make</code> , I received the following issue . </p>

<pre><code>~/Desktop/bitcoin$ make
Making all in src
make[1]: Entering directory '/home/fu/Desktop/bitcoin/src'
make  all-recursive
make[2]: Entering directory '/home/fu/Desktop/bitcoin/src'
Making all in .
make[3]: Entering directory '/home/fu/Desktop/bitcoin/src'
  CXX      addrman.o
In file included from chainparams.h:9:0,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h:56:24: error: invalid use of incomplete type ‘BIGNUM {aka struct bignum_st}’
 class CBigNum : public BIGNUM
                        ^~~~~~
In file included from /usr/include/openssl/crypto.h:31:0,
                 from allocators.h:15,
                 from serialize.h:9,
                 from netbase.h:13,
                 from addrman.h:8,
                 from addrman.cpp:5:
/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 protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In constructor ‘CBigNum::CBigNum()’:
bignum.h:61:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:61:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h: In copy constructor ‘CBigNum::CBigNum(const CBigNum&)’:
bignum.h:66:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:66:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h:67: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:69: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:76: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:83: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:87: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:87: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:88: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:88: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:89: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:89: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:90: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:90: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:91:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(long long n)          { BN_init(this); setint64(n); }
                                     ^~~~~~~
bignum.h:91: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:92:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned char n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:92: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:93:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned short n)     { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:93: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:94:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned int n)       { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:94: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:95:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned long n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:95: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:96:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned long long n) { BN_init(this); setuint64(n); }
                                     ^~~~~~~
bignum.h:96: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:97:37: error: ‘BN_init’ was not declared in this scope
     explicit CBigNum(uint256 n)   { BN_init(this); setuint256(n); }
                                     ^~~~~~~
bignum.h:97: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&)’:
bignum.h:101:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:101:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h: In member function ‘void CBigNum::setulong(long unsigned int)’:
bignum.h:107: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: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 ‘unsigned int CBigNum::getuint() const’:
bignum.h:118: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:123: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:124: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 protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In member function ‘void CBigNum::setint64(int64_t)’:
bignum.h:172: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_t)’:
bignum.h:199: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:227: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:232: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:236: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&)’:
bignum.h:257: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 CBigNum::getvch() const’:
bignum.h:262: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:266: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:302: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:306: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:307: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:309: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:17:0,
                 from chainparams.h:9,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In member function ‘unsigned int CBigNum::GetCompact() const’:
bignum.h:315: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 chainparams.h:9:0,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h:318: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)  0)
                                ^
bignum.h:381: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:387: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:420: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:425: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:439: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:469: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:475: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:484: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:501: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:526: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:534: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:542: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:550: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:559: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:17:0,
                 from chainparams.h:9,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In function ‘const CBigNum operator%(const CBigNum&, const CBigNum&)’:
bignum.h:568: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 chainparams.h:9:0,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In function ‘const CBigNum operator=(const CBigNum&, const CBigNum&)’:
bignum.h:591:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 um& a, const CBigNum& b) { return (BN_cmp(&a, &b) >= 0); }
                                                 ^
bignum.h: In function ‘bool operator(const CBigNum&, const CBigNum&)’:
bignum.h:593:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 um& a, const CBigNum& b)  { return (BN_cmp(&a, &b) > 0); }
                                                  ^
In file included from util.h:15:0,
                 from addrman.h:11,
                 from addrman.cpp:5:
tinyformat.h: In static member function ‘static const char* tinyformat::detail::FormatIterator::streamStateFromFormat(std::ostream&, unsigned int&, const char*, int, int)’:
tinyformat.h:784:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:785:9: note: here
         case 'x': case 'p':
         ^~~~
tinyformat.h:790:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:791:9: note: here
         case 'e':
         ^~~~
tinyformat.h:796:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:797:9: note: here
         case 'f':
         ^~~~
tinyformat.h:801:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:802:9: note: here
         case 'g':
         ^~~~
Makefile:838: recipe for target 'addrman.o' failed
make[3]: *** [addrman.o] Error 1
make[3]: Leaving directory '/home/fu/Desktop/bitcoin/src'
Makefile:860: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/fu/Desktop/bitcoin/src'
Makefile:652: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/fu/Desktop/bitcoin/src'
Makefile:509: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

</code></pre> 

<p>How can I solve this ? Thanks in advance !</p>

CC BY-SA 4.0
2018-08-09T12:58:16.337Z
While I am no expert, did you try to run it as "sudo"? The command "Sudo make" while you are in your bitcoin directory?
Rouse
CC BY-SA 4.0
2018-08-10T06:05:16.577Z
Are you sure that this is for Bitcoin Core? There is no class CBigNum in Bitcoin Core, nor is there a bignum.h file. The problem is not related to make, it is related to the code. Whoever added CBigNum did so incorrectly and that is what is causing all of the compiler errors.
Ava Chow
CC BY-SA 4.0
2018-08-10T06:06:54.123Z
@Rouse Making things with sudo isn't going to help. This isn't a file permissions issue, this is an issue with the code itself.
Ava Chow
<bitcoin-core><ubuntu><make>
Issue on configuring the bitcoin core build on Ubuntu-18.0.4
Fu Liang
# Issue on configuring the bitcoin core build on Ubuntu-18.0.4

(Asked by: username_0 on 2018-08-09)

I am trying to configure the bitcoin core build , as I use `make` , I received the following issue .

```
~/Desktop/bitcoin$ make
Making all in src
make[1]: Entering directory '/home/fu/Desktop/bitcoin/src'
make  all-recursive
make[2]: Entering directory '/home/fu/Desktop/bitcoin/src'
Making all in .
make[3]: Entering directory '/home/fu/Desktop/bitcoin/src'
  CXX      addrman.o
In file included from chainparams.h:9:0,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h:56:24: error: invalid use of incomplete type ‘BIGNUM {aka struct bignum_st}’
 class CBigNum : public BIGNUM
                        ^~~~~~
In file included from /usr/include/openssl/crypto.h:31:0,
                 from allocators.h:15,
                 from serialize.h:9,
                 from netbase.h:13,
                 from addrman.h:8,
                 from addrman.cpp:5:
/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 protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In constructor ‘CBigNum::CBigNum()’:
bignum.h:61:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:61:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h: In copy constructor ‘CBigNum::CBigNum(const CBigNum&)’:
bignum.h:66:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:66:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h:67: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:69: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:76: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:83: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:87: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:87: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:88: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:88: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:89: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:89: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:90: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:90: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:91:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(long long n)          { BN_init(this); setint64(n); }
                                     ^~~~~~~
bignum.h:91: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:92:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned char n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:92: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:93:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned short n)     { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:93: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:94:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned int n)       { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:94: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:95:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned long n)      { BN_init(this); setulong(n); }
                                     ^~~~~~~
bignum.h:95: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:96:37: error: ‘BN_init’ was not declared in this scope
     CBigNum(unsigned long long n) { BN_init(this); setuint64(n); }
                                     ^~~~~~~
bignum.h:96: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:97:37: error: ‘BN_init’ was not declared in this scope
     explicit CBigNum(uint256 n)   { BN_init(this); setuint256(n); }
                                     ^~~~~~~
bignum.h:97: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&)’:
bignum.h:101:9: error: ‘BN_init’ was not declared in this scope
         BN_init(this);
         ^~~~~~~
bignum.h:101:9: note: suggested alternative: ‘BN_print’
         BN_init(this);
         ^~~~~~~
         BN_print
bignum.h: In member function ‘void CBigNum::setulong(long unsigned int)’:
bignum.h:107: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: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 ‘unsigned int CBigNum::getuint() const’:
bignum.h:118: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:123: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:124: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 protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In member function ‘void CBigNum::setint64(int64_t)’:
bignum.h:172: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_t)’:
bignum.h:199: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:227: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:232: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:236: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&)’:
bignum.h:257: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 CBigNum::getvch() const’:
bignum.h:262: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:266: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:302: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:306: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:307: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:309: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:17:0,
                 from chainparams.h:9,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In member function ‘unsigned int CBigNum::GetCompact() const’:
bignum.h:315: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 chainparams.h:9:0,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h:318: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)  0)
                                ^
bignum.h:381: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:387: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:420: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:425: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:439: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:469: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:475: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:484: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:501: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:526: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:534: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:542: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:550: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:559: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:17:0,
                 from chainparams.h:9,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In function ‘const CBigNum operator%(const CBigNum&, const CBigNum&)’:
bignum.h:568: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 chainparams.h:9:0,
                 from protocol.h:13,
                 from addrman.h:9,
                 from addrman.cpp:5:
bignum.h: In function ‘const CBigNum operator=(const CBigNum&, const CBigNum&)’:
bignum.h:591:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 um& a, const CBigNum& b) { return (BN_cmp(&a, &b) >= 0); }
                                                 ^
bignum.h: In function ‘bool operator(const CBigNum&, const CBigNum&)’:
bignum.h:593:83: error: cannot convert ‘const CBigNum*’ to ‘const BIGNUM* {aka const bignum_st*}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM*, const BIGNUM*)’
 um& a, const CBigNum& b)  { return (BN_cmp(&a, &b) > 0); }
                                                  ^
In file included from util.h:15:0,
                 from addrman.h:11,
                 from addrman.cpp:5:
tinyformat.h: In static member function ‘static const char* tinyformat::detail::FormatIterator::streamStateFromFormat(std::ostream&, unsigned int&, const char*, int, int)’:
tinyformat.h:784:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:785:9: note: here
         case 'x': case 'p':
         ^~~~
tinyformat.h:790:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:791:9: note: here
         case 'e':
         ^~~~
tinyformat.h:796:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:797:9: note: here
         case 'f':
         ^~~~
tinyformat.h:801:21: warning: this statement may fall through [-Wimplicit-fallthrough=]
             out.setf(std::ios::uppercase);
             ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
tinyformat.h:802:9: note: here
         case 'g':
         ^~~~
Makefile:838: recipe for target 'addrman.o' failed
make[3]: *** [addrman.o] Error 1
make[3]: Leaving directory '/home/fu/Desktop/bitcoin/src'
Makefile:860: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/fu/Desktop/bitcoin/src'
Makefile:652: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/fu/Desktop/bitcoin/src'
Makefile:509: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

```

How can I solve this ? Thanks in advance !

**Tags:** bitcoin-core, ubuntu, make

> **Comments:**
> **username_1**: While I am no expert, did you try to run it as "sudo"? The command "Sudo make" while you are in your bitcoin directory?  
> **username_2**: Are you sure that this is for Bitcoin Core? There is no class CBigNum in Bitcoin Core, nor is there a bignum.h file. The problem is not related to make, it is related to the code. Whoever added CBigNum did so incorrectly and that is what is causing all of the compiler errors.  
> **username_2**: @username_1 Making things with sudo isn't going to help. This isn't a file permissions issue, this is an issue with the code itself.  

---

## 2 answers

### Answer by username_3 on 2019-01-02. Score: 1

If you ever see

```
error: invalid use of incomplete type BIGNUM

```

in an error log, then it means you have OpenSSL 1.1, and the project is compatible only with OpenSSL 1.0.X. Downgrade your OpenSSL to make it work.


---

### Answer by username_4 on 2018-11-11. Score: 0

I'm not sure if this is the problem or not. Apparently, there is a version of libssl-dev that causes some problems. Although the steps listed on this site specify Raspbian (which is a derivative of Debian) it might be worth looking to see if this could be your problem.

The steps are found at <https://en.wikibooks.org/wiki/Radium_Core/Raspberry_Pi>.


---

