【发布时间】:2018-07-17 10:52:27
【问题描述】:
我在尝试构建 qtum-core 时遇到错误。错误是:
make
...
CXX libbitcoin_common_a-key.o
key.cpp: In function ‘bool EnsureLowS(std::vector<unsigned char>&)’:
key.cpp:149:19: error: invalid use of incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
if (BN_cmp(sig->s, halforder) > 0) {
^
In file included from /usr/include/openssl/ecdsa.h:10:0,
from key.cpp:17:
/usr/include/openssl/ec.h:1039:16: error: forward declaration of ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
typedef struct ECDSA_SIG_st ECDSA_SIG;
^
key.cpp:151:19: error: invalid use of incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
BN_sub(sig->s, order, sig->s);
^
In file included from /usr/include/openssl/ecdsa.h:10:0,
from key.cpp:17:
/usr/include/openssl/ec.h:1039:16: error: forward declaration of ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
typedef struct ECDSA_SIG_st ECDSA_SIG;
^
key.cpp:151:34: error: invalid use of incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
BN_sub(sig->s, order, sig->s);
^
In file included from /usr/include/openssl/ecdsa.h:10:0,
from key.cpp:17:
/usr/include/openssl/ec.h:1039:16: error: forward declaration of ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
typedef struct ECDSA_SIG_st ECDSA_SIG;
^
make[2]: *** [libbitcoin_common_a-key.o] Error 1
make[2]: Leaving directory `/home/qtum_data/qtum/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/qtum_data/qtum/src'
make: *** [all-recursive] Error 1
有什么问题,我该如何解决?
git clone --recursive https://github.com/qtumproject/qtum.gitcd qtum-
运行
autogen./autogen.sh libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `build-aux'. libtoolize: copying file `build-aux/ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `build-aux/m4'. libtoolize: copying file `build-aux/m4/libtool.m4' libtoolize: copying file `build-aux/m4/ltoptions.m4' libtoolize: copying file `build-aux/m4/ltsugar.m4' libtoolize: copying file `build-aux/m4/ltversion.m4' ... configure.ac:32: installing 'build-aux/missing' Makefile.am:12: warning: user variable 'GZIP_ENV' defined here ... /usr/share/automake-1.14/am/distdir.am: ... overrides Automake variable 'GZIP_ENV' defined here src/Makefile.am: installing 'build-aux/depcomp' src/Makefile.am:703: warning: user target '.mm.o' defined here ... /usr/share/automake-1.14/am/depend2.am: ... overrides Automake target '.mm.o' defined here parallel-tests: installing 'build-aux/test-driver' -
配置
./configure --without-gui checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... yes checking whether make supports nested variables... (cached) yes checking for g++... g++ ... configure: Using jni: no configure: ****** configure: WARNING: experimental build configure: Experimental features do not have stable APIs or properties, and may not be safe for production use. configure: Building ECDH module: yes configure: ****** checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating libsecp256k1.pc config.status: creating src/libsecp256k1-config.h config.status: executing depfiles commands config.status: executing libtool commands Fixing libtool for -rpath problems. Options used to compile and link: with wallet = yes with gui / qt = no with zmq = no with test = yes with bench = yes with upnp = auto debug enabled = no werror = no target os = linux build os = CC = gcc CFLAGS = -g -O2 CPPFLAGS = -DQTUM_BUILD -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS CXX = g++ -std=c++11 CXXFLAGS = -g -O2 -Wall -Wextra -Wformat -Wvla -Wformat-security -Wno-unused-parameter -Wno-unknown-pragmas LDFLAGS = -
制作
make Making all in src make[1]: Entering directory `/home/qtum_data/qtum/src' make[2]: Entering directory `/home/qtum_data/qtum/src' CXX crypto/libbitcoinconsensus_la-aes.lo CXX crypto/libbitcoinconsensus_la-chacha20.lo CXX crypto/libbitcoinconsensus_la-hmac_sha256.lo CXX crypto/libbitcoinconsensus_la-hmac_sha512.lo CXX crypto/libbitcoinconsensus_la-ripemd160.lo CXX crypto/libbitcoinconsensus_la-sha1.lo CXX crypto/libbitcoinconsensus_la-sha256.lo CXX crypto/libbitcoinconsensus_la-sha512.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-b64.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-crypto-mcf.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-crypto_scrypt-check.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-crypto_scrypt-hash.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-crypto_scrypt-hexconvert.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-crypto_scrypt-nosse.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-crypto-scrypt-saltgen.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-sha256.lo CC cpp-ethereum/utils/libscrypt/libbitcoinconsensus_la-slowequals.lo CXX libbitcoinconsensus_la-arith_uint256.lo CXX consensus/libbitcoinconsensus_la-merkle.lo CXX libbitcoinconsensus_la-hash.lo CXX primitives/libbitcoinconsensus_la-block.lo CXX primitives/libbitcoinconsensus_la-transaction.lo CXX libbitcoinconsensus_la-pubkey.lo CXX script/libbitcoinconsensus_la-bitcoinconsensus.lo CXX script/libbitcoinconsensus_la-interpreter.lo CXX script/libbitcoinconsensus_la-script.lo CXX script/libbitcoinconsensus_la-script_error.lo CXX libbitcoinconsensus_la-uint256.lo CXX libbitcoinconsensus_la-utilstrencodings.lo make[3]: Entering directory `/home/qtum_data/qtum/src/secp256k1' gcc -I. -g -O2 -Wall -Wextra -Wno-unused-function -c src/gen_context.c -o gen_context.o gcc gen_context.o -o gen_context ./gen_context CC src/libsecp256k1_la-secp256k1.lo CCLD libsecp256k1.la make[3]: Leaving directory `/home/qtum_data/qtum/src/secp256k1' CXXLD libbitcoinconsensus.la copying selected object files to avoid basename conflicts... CXX qtumd-bitcoind.o CXX libbitcoin_server_a-addrman.o CXX libbitcoin_server_a-addrdb.o CXX libbitcoin_server_a-bloom.o CXX libbitcoin_server_a-blockencodings.o CXX libbitcoin_server_a-chain.o CXX libbitcoin_server_a-checkpoints.o CXX libbitcoin_server_a-httprpc.o CXX libbitcoin_server_a-httpserver.o CXX libbitcoin_server_a-init.o CXX libbitcoin_server_a-dbwrapper.o CXX libbitcoin_server_a-merkleblock.o CXX libbitcoin_server_a-miner.o CXX libbitcoin_server_a-net.o CXX libbitcoin_server_a-net_processing.o CXX libbitcoin_server_a-noui.o CXX policy/libbitcoin_server_a-fees.o CXX policy/libbitcoin_server_a-policy.o CXX libbitcoin_server_a-pow.o CXX libbitcoin_server_a-pos.o CXX libbitcoin_server_a-rest.o CXX rpc/libbitcoin_server_a-blockchain.o CXX rpc/libbitcoin_server_a-mining.o CXX rpc/libbitcoin_server_a-misc.o CXX rpc/libbitcoin_server_a-net.o CXX rpc/libbitcoin_server_a-rawtransaction.o CXX rpc/libbitcoin_server_a-server.o CXX script/libbitcoin_server_a-sigcache.o CXX script/libbitcoin_server_a-ismine.o CXX libbitcoin_server_a-timedata.o CXX libbitcoin_server_a-torcontrol.o CXX libbitcoin_server_a-txdb.o CXX libbitcoin_server_a-txmempool.o CXX libbitcoin_server_a-ui_interface.o CXX libbitcoin_server_a-validation.o CXX libbitcoin_server_a-validationinterface.o CXX libbitcoin_server_a-versionbits.o CXX qtum/libbitcoin_server_a-qtumstate.o CXX qtum/libbitcoin_server_a-qtumtransaction.o CXX qtum/libbitcoin_server_a-qtumDGP.o CXX consensus/libbitcoin_server_a-consensus.o CXX qtum/libbitcoin_server_a-storageresults.o AR libbitcoin_server.a CXX libbitcoin_common_a-amount.o CXX libbitcoin_common_a-base58.o CXX libbitcoin_common_a-chainparams.o CXX libbitcoin_common_a-coins.o CXX libbitcoin_common_a-compressor.o CXX libbitcoin_common_a-core_read.o CXX libbitcoin_common_a-core_write.o CXX libbitcoin_common_a-key.o key.cpp: In function ‘bool EnsureLowS(std::vector<unsigned char>&)’: key.cpp:149:19: error: invalid use of incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’ if (BN_cmp(sig->s, halforder) > 0) { ^ In file included from /usr/include/openssl/ecdsa.h:10:0, from key.cpp:17: /usr/include/openssl/ec.h:1039:16: error: forward declaration of ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’ typedef struct ECDSA_SIG_st ECDSA_SIG; ^ key.cpp:151:19: error: invalid use of incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’ BN_sub(sig->s, order, sig->s); ^ In file included from /usr/include/openssl/ecdsa.h:10:0, from key.cpp:17: /usr/include/openssl/ec.h:1039:16: error: forward declaration of ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’ typedef struct ECDSA_SIG_st ECDSA_SIG; ^ key.cpp:151:34: error: invalid use of incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’ BN_sub(sig->s, order, sig->s); ^ In file included from /usr/include/openssl/ecdsa.h:10:0, from key.cpp:17: /usr/include/openssl/ec.h:1039:16: error: forward declaration of ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’ typedef struct ECDSA_SIG_st ECDSA_SIG; ^ make[2]: *** [libbitcoin_common_a-key.o] Error 1 make[2]: Leaving directory `/home/qtum_data/qtum/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/qtum_data/qtum/src' make: *** [all-recursive] Error 1 -
我的服务器环境
操作系统 - Linux xxxxxxx-X10SLL-F 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux openssl 版本 - OpenSSL 1.0.2g
我该如何解决这个问题?
【问题讨论】:
标签: c++ c makefile openssl ubuntu-14.04