metaverse
metaverse copied to clipboard
Building problem on Centos7.3 error: invalid initialization of non-const reference of type ‘libbitcoin::threadpool&’ from an rvalue of type ‘<brace-enclosed initializer list>’
CentOS Linux release 7.3.1611 (Core) Following build instruction on this github.
Get this error
Linking CXX static library ../../../lib/libmvs_bitcoin.a
cd /home/vorapoap/metaverse/metaverse/build/src/lib/bitcoin && /usr/bin/cmake -P CMakeFiles/bitcoin_static.dir/cmake_clean_target.cmake
cd /home/vorapoap/metaverse/metaverse/build/src/lib/bitcoin && /usr/bin/cmake -E cmake_link_script CMakeFiles/bitcoin_static.dir/link.txt --verbose=1
/usr/bin/ar cr ../../../lib/libmvs_bitcoin.a CMakeFiles/bitcoin_static.dir/chain/attachment/account/account.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/account/account_address.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/asset/asset.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/asset/asset_detail.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/asset/asset_transfer.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/asset/blockchain_asset.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/attachment.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/etp/etp.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/etp/etp_award.cpp.o CMakeFiles/bitcoin_static.dir/chain/attachment/message/message.cpp.o CMakeFiles/bitcoin_static.dir/chain/block.cpp.o CMakeFiles/bitcoin_static.dir/chain/business_data.cpp.o CMakeFiles/bitcoin_static.dir/chain/header.cpp.o CMakeFiles/bitcoin_static.dir/chain/input.cpp.o CMakeFiles/bitcoin_static.dir/chain/output.cpp.o CMakeFiles/bitcoin_static.dir/chain/point.cpp.o CMakeFiles/bitcoin_static.dir/chain/point_iterator.cpp.o CMakeFiles/bitcoin_static.dir/chain/script/conditional_stack.cpp.o CMakeFiles/bitcoin_static.dir/chain/script/evaluation_context.cpp.o CMakeFiles/bitcoin_static.dir/chain/script/opcode.cpp.o CMakeFiles/bitcoin_static.dir/chain/script/operation.cpp.o CMakeFiles/bitcoin_static.dir/chain/script/script.cpp.o CMakeFiles/bitcoin_static.dir/chain/transaction.cpp.o CMakeFiles/bitcoin_static.dir/config/authority.cpp.o CMakeFiles/bitcoin_static.dir/config/base16.cpp.o CMakeFiles/bitcoin_static.dir/config/base2.cpp.o CMakeFiles/bitcoin_static.dir/config/base58.cpp.o CMakeFiles/bitcoin_static.dir/config/base64.cpp.o CMakeFiles/bitcoin_static.dir/config/checkpoint.cpp.o CMakeFiles/bitcoin_static.dir/config/directory.cpp.o CMakeFiles/bitcoin_static.dir/config/endpoint.cpp.o CMakeFiles/bitcoin_static.dir/config/hash160.cpp.o CMakeFiles/bitcoin_static.dir/config/hash256.cpp.o CMakeFiles/bitcoin_static.dir/config/parameter.cpp.o CMakeFiles/bitcoin_static.dir/config/parser.cpp.o CMakeFiles/bitcoin_static.dir/config/printer.cpp.o CMakeFiles/bitcoin_static.dir/config/sodium.cpp.o CMakeFiles/bitcoin_static.dir/constants.cpp.o CMakeFiles/bitcoin_static.dir/error.cpp.o CMakeFiles/bitcoin_static.dir/formats/base_10.cpp.o CMakeFiles/bitcoin_static.dir/formats/base_16.cpp.o CMakeFiles/bitcoin_static.dir/formats/base_58.cpp.o CMakeFiles/bitcoin_static.dir/formats/base_64.cpp.o CMakeFiles/bitcoin_static.dir/formats/base_85.cpp.o CMakeFiles/bitcoin_static.dir/math/checksum.cpp.o CMakeFiles/bitcoin_static.dir/math/crypto.cpp.o CMakeFiles/bitcoin_static.dir/math/elliptic_curve.cpp.o CMakeFiles/bitcoin_static.dir/math/hash.cpp.o CMakeFiles/bitcoin_static.dir/math/hash_number.cpp.o CMakeFiles/bitcoin_static.dir/math/script_number.cpp.o CMakeFiles/bitcoin_static.dir/math/secp256k1_initializer.cpp.o CMakeFiles/bitcoin_static.dir/math/stealth.cpp.o CMakeFiles/bitcoin_static.dir/math/uint256.cpp.o CMakeFiles/bitcoin_static.dir/message/address.cpp.o CMakeFiles/bitcoin_static.dir/message/alert.cpp.o CMakeFiles/bitcoin_static.dir/message/alert_payload.cpp.o CMakeFiles/bitcoin_static.dir/message/block_message.cpp.o CMakeFiles/bitcoin_static.dir/message/block_transactions.cpp.o CMakeFiles/bitcoin_static.dir/message/compact_block.cpp.o CMakeFiles/bitcoin_static.dir/message/fee_filter.cpp.o CMakeFiles/bitcoin_static.dir/message/filter_add.cpp.o CMakeFiles/bitcoin_static.dir/message/filter_clear.cpp.o CMakeFiles/bitcoin_static.dir/message/filter_load.cpp.o CMakeFiles/bitcoin_static.dir/message/get_address.cpp.o CMakeFiles/bitcoin_static.dir/message/get_block_transactions.cpp.o CMakeFiles/bitcoin_static.dir/message/get_blocks.cpp.o CMakeFiles/bitcoin_static.dir/message/get_data.cpp.o CMakeFiles/bitcoin_static.dir/message/get_headers.cpp.o CMakeFiles/bitcoin_static.dir/message/header_message.cpp.o CMakeFiles/bitcoin_static.dir/message/headers.cpp.o CMakeFiles/bitcoin_static.dir/message/heading.cpp.o CMakeFiles/bitcoin_static.dir/message/inventory.cpp.o CMakeFiles/bitcoin_static.dir/message/inventory_vector.cpp.o CMakeFiles/bitcoin_static.dir/message/memory_pool.cpp.o CMakeFiles/bitcoin_static.dir/message/merkle_block.cpp.o CMakeFiles/bitcoin_static.dir/message/network_address.cpp.o CMakeFiles/bitcoin_static.dir/message/not_found.cpp.o CMakeFiles/bitcoin_static.dir/message/ping.cpp.o CMakeFiles/bitcoin_static.dir/message/pong.cpp.o CMakeFiles/bitcoin_static.dir/message/prefilled_transaction.cpp.o CMakeFiles/bitcoin_static.dir/message/reject.cpp.o CMakeFiles/bitcoin_static.dir/message/send_compact_blocks.cpp.o CMakeFiles/bitcoin_static.dir/message/send_headers.cpp.o CMakeFiles/bitcoin_static.dir/message/transaction_message.cpp.o CMakeFiles/bitcoin_static.dir/message/verack.cpp.o CMakeFiles/bitcoin_static.dir/message/version.cpp.o CMakeFiles/bitcoin_static.dir/unicode/console_streambuf.cpp.o CMakeFiles/bitcoin_static.dir/unicode/ifstream.cpp.o CMakeFiles/bitcoin_static.dir/unicode/ofstream.cpp.o CMakeFiles/bitcoin_static.dir/unicode/unicode.cpp.o CMakeFiles/bitcoin_static.dir/unicode/unicode_istream.cpp.o CMakeFiles/bitcoin_static.dir/unicode/unicode_ostream.cpp.o CMakeFiles/bitcoin_static.dir/unicode/unicode_streambuf.cpp.o CMakeFiles/bitcoin_static.dir/utility/backtrace.cpp.o CMakeFiles/bitcoin_static.dir/utility/binary.cpp.o CMakeFiles/bitcoin_static.dir/utility/conditional_lock.cpp.o CMakeFiles/bitcoin_static.dir/utility/daemon.cpp.o CMakeFiles/bitcoin_static.dir/utility/deadline.cpp.o CMakeFiles/bitcoin_static.dir/utility/dispatcher.cpp.o CMakeFiles/bitcoin_static.dir/utility/istream_reader.cpp.o CMakeFiles/bitcoin_static.dir/utility/log.cpp.o CMakeFiles/bitcoin_static.dir/utility/logging.cpp.o CMakeFiles/bitcoin_static.dir/utility/monitor.cpp.o CMakeFiles/bitcoin_static.dir/utility/ostream_writer.cpp.o CMakeFiles/bitcoin_static.dir/utility/path.cpp.o CMakeFiles/bitcoin_static.dir/utility/png.cpp.o CMakeFiles/bitcoin_static.dir/utility/random.cpp.o CMakeFiles/bitcoin_static.dir/utility/resource_lock.cpp.o CMakeFiles/bitcoin_static.dir/utility/scope_lock.cpp.o CMakeFiles/bitcoin_static.dir/utility/string.cpp.o CMakeFiles/bitcoin_static.dir/utility/thread.cpp.o CMakeFiles/bitcoin_static.dir/utility/threadpool.cpp.o CMakeFiles/bitcoin_static.dir/utility/time.cpp.o CMakeFiles/bitcoin_static.dir/utility/variable_uint_size.cpp.o CMakeFiles/bitcoin_static.dir/utility/work.cpp.o CMakeFiles/bitcoin_static.dir/wallet/bitcoin_uri.cpp.o CMakeFiles/bitcoin_static.dir/wallet/dictionary.cpp.o CMakeFiles/bitcoin_static.dir/wallet/ec_private.cpp.o CMakeFiles/bitcoin_static.dir/wallet/ec_public.cpp.o CMakeFiles/bitcoin_static.dir/wallet/ek_private.cpp.o CMakeFiles/bitcoin_static.dir/wallet/ek_public.cpp.o CMakeFiles/bitcoin_static.dir/wallet/ek_token.cpp.o CMakeFiles/bitcoin_static.dir/wallet/encrypted_keys.cpp.o CMakeFiles/bitcoin_static.dir/wallet/hd_private.cpp.o CMakeFiles/bitcoin_static.dir/wallet/hd_public.cpp.o CMakeFiles/bitcoin_static.dir/wallet/message.cpp.o CMakeFiles/bitcoin_static.dir/wallet/mini_keys.cpp.o CMakeFiles/bitcoin_static.dir/wallet/mnemonic.cpp.o CMakeFiles/bitcoin_static.dir/wallet/parse_encrypted_keys/parse_encrypted_private.cpp.o CMakeFiles/bitcoin_static.dir/wallet/parse_encrypted_keys/parse_encrypted_public.cpp.o CMakeFiles/bitcoin_static.dir/wallet/parse_encrypted_keys/parse_encrypted_token.cpp.o CMakeFiles/bitcoin_static.dir/wallet/payment_address.cpp.o CMakeFiles/bitcoin_static.dir/wallet/qrcode.cpp.o CMakeFiles/bitcoin_static.dir/wallet/select_outputs.cpp.o CMakeFiles/bitcoin_static.dir/wallet/stealth_address.cpp.o CMakeFiles/bitcoin_static.dir/wallet/uri.cpp.o
/home/vorapoap/metaverse/metaverse/src/lib/network/hosts.cpp: In constructor ‘libbitcoin::network::hosts::hosts(libbitcoin::threadpool&, const libbitcoin::network::settings&)’:
/home/vorapoap/metaverse/metaverse/src/lib/network/hosts.cpp:42:12: error: invalid initialization of non-const reference of type ‘libbitcoin::threadpool&’ from an rvalue of type ‘<brace-enclosed initializer list>’
pool_{pool}
^
which I believe generating the following error
/home/vorapoap/metaverse/metaverse/src/lib/consensus/miner.cpp: In static member function ‘static libbitcoin::consensus::miner::block_ptr libbitcoin::consensus::miner::create_genesis_block(bool)’:
/home/vorapoap/metaverse/metaverse/src/lib/consensus/miner.cpp:186:37: error: missing initializer for member ‘std::array<unsigned char, 32ul>::_M_elems’ [-Werror=missing-field-initializers]
pblock->header.previous_block_hash = {};
^
make[2]: *** [src/lib/network/CMakeFiles/network_static.dir/hosts.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
cc1plus: all warnings being treated as errors
make[2]: *** [src/lib/consensus/CMakeFiles/consensus_static.dir/miner.cpp.o] Error 1
make[2]: Leaving directory `/home/vorapoap/metaverse/metaverse/build'
make[1]: *** [src/lib/consensus/CMakeFiles/consensus_static.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/home/vorapoap/metaverse/metaverse/build'
make[1]: *** [src/lib/network/CMakeFiles/network_static.dir/all] Error 2
make[1]: Leaving directory `/home/vorapoap/metaverse/metaverse/build'
make: *** [all] Error 2
After research on Google, it maybe related to C++11/C++14 standard /GCC version ?
My c++ -v reports
Using built-in specs.
COLLECT_GCC=c++
COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-4/root/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-4/root/usr --mandir=/opt/rh/devtoolset-4/root/usr/share/man --infodir=/opt/rh/devtoolset-4/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-plugin --with-linker-hash-style=gnu --enable-initfini-array --disable-libgcj --with-default-libstdcxx-abi=gcc4-compatible --with-isl=/builddir/build/BUILD/gcc-5.3.1-20160406/obj-x86_64-redhat-linux/isl-install --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
A quick help on this is to tell me which gcc version you can use to build this on CentOS 7.2?
Hmm switching to devtoolset-7 still doesn't help
Using built-in specs. COLLECT_GCC=c++ COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/opt/rh/devtoolset-7/root/usr --mandir=/opt/rh/devtoolset-7/root/usr/share/man --infodir=/opt/rh/devtoolset-7/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-plugin --with-linker-hash-style=gnu --enable-initfini-array --with-default-libstdcxx-abi=gcc4-compatible --with-isl=/builddir/build/BUILD/gcc-7.2.1-20170829/obj-x86_64-redhat-linux/isl-install --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux Thread model: posix gcc version 7.2.1 20170829 (Red Hat 7.2.1-1) (GCC)
@vorapoap got same issue on GCC 6 (devtoolset-7) ?
it seems gcc version problem.
@chengzhpchn
Please check if you have installed more than one gcc version on your CentOS. Maybe you should remove all gcc versions and reinstall "gcc version 5.3.1 20160406", and try it again. My workmate has fed back the "gcc version 5.3.1 20160406" works well on his CentOS. Of cource he removed the origin gcc brought with the CentOS first.
@vorapoap I am not sure this patch will solve your compiling problem as I'm not using CentOS, but you may have a try of this patch https://github.com/mvs-org/metaverse/commit/d4c9bd82302b700c3c62232f89bd5a5ff1a39ef6
@jowenshaw Thank you so much. The previous error has been resolved now, but the new one , same error message, different location
[52%] Building CXX object src/lib/client/CMakeFiles/client_static.dir/obelisk_client.cpp.o cd /home/vorapoap/metaverse/metaverse/build/src/lib/client && /usr/bin/c++ -DBCC_STATIC=1 -DUSE_UPNP=1 -std=c++11 -fstrict-aliasing -fvisibility=hidden -Wall -Wextra -Wstrict-aliasing=2 -Wno-unused-parameter -Wno-unused-variable -Wno-type-limits -Werror -pthread -fno-enforce-eh-specs -fnothrow-opt -Wno-reorder -Wno-ignored-qualifiers -Wno-unused-function -Wno-unused-but-set-variable -Wno-sign-compare -Wno-unused-but-set-parameter -O3 -DNDEBUG -I/usr/local/include -I/home/vorapoap/metaverse/metaverse/contrib -I/home/vorapoap/metaverse/metaverse/include -o CMakeFiles/client_static.dir/obelisk_client.cpp.o -c /home/vorapoap/metaverse/metaverse/src/lib/client/obelisk_client.cpp In file included from /home/vorapoap/metaverse/metaverse/include/metaverse/bitcoin/utility/assert.hpp:40:0, from /home/vorapoap/metaverse/metaverse/include/metaverse/bitcoin/impl/utility/data.ipp:27, from /home/vorapoap/metaverse/metaverse/include/metaverse/bitcoin/utility/data.hpp:156, from /home/vorapoap/metaverse/metaverse/include/metaverse/bitcoin/message/network_address.hpp:28, from /home/vorapoap/metaverse/metaverse/include/metaverse/bitcoin/constants.hpp:28, from /home/vorapoap/metaverse/metaverse/include/metaverse/bitcoin.hpp:19, from /home/vorapoap/metaverse/metaverse/include/metaverse/network/sessions/session_inbound.hpp:27, from /home/vorapoap/metaverse/metaverse/src/lib/network/sessions/session_inbound.cpp:21: /home/vorapoap/metaverse/metaverse/src/lib/network/sessions/session_inbound.cpp: In constructor ‘libbitcoin::network::session_inbound::session_inbound(libbitcoin::network::p2p&)’: /home/vorapoap/metaverse/metaverse/include/metaverse/bitcoin/utility/track.hpp:29:34: error: invalid initialization of non-const reference of type ‘libbitcoin::network::p2p&’ from an rvalue of type ‘<brace-enclosed initializer list>’ track<class_name>(#class_name) ^ /home/vorapoap/metaverse/metaverse/src/lib/network/sessions/session_inbound.cpp:41:5: note: in expansion of macro ‘CONSTRUCT_TRACK’ CONSTRUCT_TRACK(session_inbound) ^
I think I have passed the previous error with this patch acc218e
But I have got the new error, could someone please take a look? @jowenshaw @chengzhpchn
[ 53%] Building CXX object src/lib/blockchain/CMakeFiles/blockchain_static.dir/orphan_pool.cpp.o
cd /home/vorapoap/metaverse/metaverse/build/src/lib/blockchain && /usr/bin/c++ -DBCB_STATIC=1 -DUSE_UPNP=1 -DWITH_CONSENSUS -std=c++11 -fstrict-aliasing -fvisibility=hidden -Wall -Wextra -Wstrict-aliasing=2 -Wno-unused-parameter -Wno-unused-variable -Wno-type-limits -Werror -pthread -fno-enforce-eh-specs -fnothrow-opt -Wno-reorder -Wno-ignored-qualifiers -Wno-unused-function -Wno-unused-but-set-variable -Wno-sign-compare -Wno-unused-but-set-parameter -O3 -DNDEBUG -I/usr/local/include -I/home/vorapoap/metaverse/metaverse/contrib -I/home/vorapoap/metaverse/metaverse/include -o CMakeFiles/blockchain_static.dir/orphan_pool.cpp.o -c /home/vorapoap/metaverse/metaverse/src/lib/blockchain/orphan_pool.cpp
/home/vorapoap/metaverse/metaverse/src/lib/blockchain/block_chain_impl.cpp: In member function ‘virtual void libbitcoin::blockchain::block_chain_impl::fetch_spend(const output_point&, libbitcoin::blockchain::block_chain::spend_fetch_handler)’:
/home/vorapoap/metaverse/metaverse/src/lib/blockchain/block_chain_impl.cpp:914:43: error: missing initializer for member ‘libbitcoin::chain::point::hash’ [-Werror=missing-field-initializers]
handler(error::service_stopped, {});
^
/home/vorapoap/metaverse/metaverse/src/lib/blockchain/block_chain_impl.cpp:914:43: error: missing initializer for member ‘libbitcoin::chain::point::index’ [-Werror=missing-field-initializers]
hmm seem like compiling with devtoolset-4 will not encounter above error.