metaverse icon indicating copy to clipboard operation
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>’

Open vorapoap opened this issue 6 years ago • 8 comments

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?

vorapoap avatar Apr 06 '18 08:04 vorapoap

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 avatar Apr 06 '18 16:04 vorapoap

@vorapoap got same issue on GCC 6 (devtoolset-7) ?

it seems gcc version problem.

betachen avatar Apr 08 '18 10:04 betachen

@chengzhpchn

betachen avatar Apr 08 '18 10:04 betachen

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.

chengzhpchn avatar Apr 09 '18 02:04 chengzhpchn

@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 avatar Apr 09 '18 03:04 jowenshaw

@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) ^

vorapoap avatar Apr 09 '18 17:04 vorapoap

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]

vorapoap avatar Apr 09 '18 17:04 vorapoap

hmm seem like compiling with devtoolset-4 will not encounter above error.

vorapoap avatar Apr 09 '18 18:04 vorapoap