【问题标题】:Issue using Make when compiling Bitcoind编译 Bitcoind 时使用 Make 的问题
【发布时间】:2020-07-02 14:08:15
【问题描述】:

我在这个问题上遇到了将近两天的麻烦,我的 make 在命令后不久崩溃。我按照比特币 github 自述文件中的 OSx 设置,执行了 ./autogen.sh 和 ./configure 。 我尝试安装 gcc,卸载并重新安装 openssl,以及几乎所有发生在我身上的事情。请注意,make 命令在 master 分支上运行良好,只是在最新的分支上失败(在我的例子中是 V0.9.5)。这可能是一个简单的解决方案,也可能不是一个简单的解决方案,但我在这一点上真的很难过,并感谢任何帮助。 这是我在执行 make 命令后不久遇到的错误:

Making all in src
/Applications/Xcode.app/Contents/Developer/usr/bin/make  all-recursive
Making all in .
  CXX      bitcoind.o
In file included from bitcoind.cpp:9:
In file included from ./main.h:13:
./bignum.h:56:24: error: base class has incomplete type
class CBigNum : public BIGNUM
                ~~~~~~~^~~~~~
/usr/local/Cellar/openssl@1.1/1.1.1d/include/openssl/ossl_typ.h:80:16: note: forward declaration of 'bignum_st'
typedef struct bignum_st BIGNUM;
               ^
In file included from bitcoind.cpp:9:
In file included from ./main.h:13:
./bignum.h:61:9: error: use of undeclared identifier 'BN_init'
        BN_init(this);
        ^
./bignum.h:66:9: error: use of undeclared identifier 'BN_init'
        BN_init(this);
        ^
./bignum.h:67:14: error: no matching function for call to 'BN_copy'
        if (!BN_copy(this, &b))
             ^~~~~~~
/usr/local/Cellar/openssl@1.1/1.1.1d/include/openssl/bn.h:219:9: note: candidate function not viable: no known conversion
      from 'CBigNum *' to 'BIGNUM *' (aka 'bignum_st *') for 1st argument
BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
        ^
In file included from bitcoind.cpp:9:
In file included from ./main.h:13:
./bignum.h:69:13: error: no matching function for call to 'BN_clear_free'
            BN_clear_free(this);
            ^~~~~~~~~~~~~
/usr/local/Cellar/openssl@1.1/1.1.1d/include/openssl/bn.h:218:6: note: candidate function not viable: no known conversion
      from 'CBigNum *' to 'BIGNUM *' (aka 'bignum_st *') for 1st argument
void BN_clear_free(BIGNUM *a);
     ^
In file included from bitcoind.cpp:9:
In file included from ./main.h:13:
./bignum.h:76:14: error: no matching function for call to 'BN_copy'
        if (!BN_copy(this, &b))
             ^~~~~~~
/usr/local/Cellar/openssl@1.1/1.1.1d/include/openssl/bn.h:219:9: note: candidate function not viable: no known conversion
      from 'CBigNum *' to 'BIGNUM *' (aka 'bignum_st *') for 1st argument
BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
        ^
In file included from bitcoind.cpp:9:
In file included from ./main.h:13:
./bignum.h:83:9: error: no matching function for call to 'BN_clear_free'
        BN_clear_free(this);
        ^~~~~~~~~~~~~
/usr/local/Cellar/openssl@1.1/1.1.1d/include/openssl/bn.h:218:6: note: candidate function not viable: no known conversion
      from 'CBigNum *' to 'BIGNUM *' (aka 'bignum_st *') for 1st argument
void BN_clear_free(BIGNUM *a);
     ^
In file included from bitcoind.cpp:9:
In file included from ./main.h:13:
./bignum.h:87:37: error: use of undeclared identifier 'BN_init'
    CBigNum(signed char n)        { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                    ^
./bignum.h:88:37: error: use of undeclared identifier 'BN_init'
    CBigNum(short n)              { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                    ^
./bignum.h:89:37: error: use of undeclared identifier 'BN_init'
    CBigNum(int n)                { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                    ^
./bignum.h:90:37: error: use of undeclared identifier 'BN_init'
    CBigNum(long n)               { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
                                    ^
./bignum.h:91:37: error: use of undeclared identifier 'BN_init'
    CBigNum(long long n)          { BN_init(this); setint64(n); }
                                    ^
./bignum.h:92:37: error: use of undeclared identifier 'BN_init'
    CBigNum(unsigned char n)      { BN_init(this); setulong(n); }
                                    ^
./bignum.h:93:37: error: use of undeclared identifier 'BN_init'
    CBigNum(unsigned short n)     { BN_init(this); setulong(n); }
                                    ^
./bignum.h:94:37: error: use of undeclared identifier 'BN_init'
    CBigNum(unsigned int n)       { BN_init(this); setulong(n); }
                                    ^
./bignum.h:95:37: error: use of undeclared identifier 'BN_init'
    CBigNum(unsigned long n)      { BN_init(this); setulong(n); }
                                    ^
./bignum.h:96:37: error: use of undeclared identifier 'BN_init'
    CBigNum(unsigned long long n) { BN_init(this); setuint64(n); }
                                    ^
./bignum.h:97:37: error: use of undeclared identifier 'BN_init'
    explicit CBigNum(uint256 n)   { BN_init(this); setuint256(n); }
                                    ^
./bignum.h:101:9: error: use of undeclared identifier 'BN_init'
        BN_init(this);
        ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[3]: *** [bitcoind.o] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

【问题讨论】:

    标签: makefile bitcoin bitcoind


    【解决方案1】:

    我最近遇到了这个问题。我重新检查并确保设置了以下依赖项:

    $ brew install automake berkeley-db4 libtool boost miniupnpc pkg-config python qt libevent qrencode
    $ brew install librsvg
    

    在此之后它工作正常。

    【讨论】: