On Fri May 18, 2018 at 11:47:48AM -0400, Joseph Mayer wrote:
> 2018-05-07 3:21 GMT+08:00 Rafael Sadowski <[email protected]>:
> > It doesn't build with ports-gcc
>
> I got it built using ports not too long ago.
>
> What issues did you get trying to build it using gcc-ports (GCC 4.9.4)?
Please find attached my GCC output. The same linker call works with
clang but not with ports-gcc.
>
> The only issue was the difficulty of install Berkeley DB, which can be
> resolved by either building and installing (how?) or something like
> --disable-wallet, as only the wallet subfunctionality uses it anyhow,
> not the central router.
>
> Do you build the QT and wallet parts?
Please check the ports Makefile.
>
> > and you already said it: "... you wouldn't want to run this on a
> > machine that doesn't have clang available to it since it's probably
> > far too slow."
>
> Clang may be working well for many projects, this one included, but
> there are also projects today where Clang consistently performs
> disastrously, so GCC will remain having a valid niche, maybe for very
> long.
>
It's about architectures not projects.
/usr/bin/libtool --tag=CXX --mode=link c++ -Wstack-protector
-fstack-protector-all -fPIE -O2 -pipe -std=c++14 -pthread -Wl,-z,relro
-Wl,-z,now -L/usr/X11R6/lib -L/usr/local/lib -L/usr/local/lib/db4 -o bitcoind
bitcoind-bitcoind.o libbitcoin_server.a libbitcoin_common.a
univalue/libunivalue.la libbitcoin_util.a libbitcoin_wallet.a libbitcoin_zmq.a
libbitcoin_consensus.a
crypto/libbitcoin_crypto.a leveldb/libleveldb.a leveldb/libleveldb_sse42.a
leveldb/libmemenv.a secp256k1/libsecp256k1.la -pthread -L/usr/local/lib
-lboost_system -lboost_filesystem -lboost_program_options-mt -lboost_thread-mt
-lboost_chrono-mt -ldb_cxx -lssl -lcrypto -lcrypto -lminiupnpc -L/usr/local/lib
-levent_pthreads -levent_extra -levent_core -L/usr/local/lib -levent_extra
-levent_core -L/usr/local/lib -lzmq
libtool: link: c++ -o .libs/bitcoind -pthread -Wstack-protector
-fstack-protector-all -fPIE -O2 -pipe -std=c++14 -Wl,-z -Wl,relro -Wl,-z
-Wl,now bitcoind-bitcoind.o libbitcoin_server.a libbitcoin_common.a
libbitcoin_util.a libbitcoin_wallet.a libbitcoin_zmq.a libbitcoin_consensus.a
crypto/libbitcoin_crypto.a leveldb/libleveldb.a leveldb/libleveldb_sse42.a
leveldb/libmemenv.a -L.libs -lunivalue -lsecp256k1 -lboost_system -lc++
-lc++abi -lpthread -lm -lboost_filesystem -lboost_program_options-mt
-lboost_thread-mt -lboost_system-mt -lboost_chrono-mt -ldb_cxx -lssl -lcrypto
-lminiupnpc -levent_pthreads -levent_extra -levent_core -lzmq -lsodium
-Wl,-rpath-link,/usr/local/lib
.libs/libzmq.so.4.2: warning: sprintf() is often misused, please use snprintf()
.libs/libzmq.so.4.2: warning: strcat() is almost always misused, please use
strlcat()
.libs/libevent_core.so.1.1: warning: random() may return deterministic values,
is that what you want?
.libs/libboost_filesystem.so.8.0: warning: strcpy() is almost always misused,
please use strlcpy()
.libs/libdb_cxx.so.6.0: warning: rand() may return deterministic values, is
that what you want?
libbitcoin_util.a(libbitcoin_util_a-util.o): In function `SetupEnvironment()':
util.cpp:(.text+0x12ca): undefined reference to
`boost::filesystem::path::imbue(std::locale const&)'
util.cpp:(.text+0x12d5): undefined reference to
`boost::filesystem::path::imbue(std::locale const&)'
libbitcoin_util.a(libbitcoin_util_a-util.o): In function
`boost::program_options::detail::basic_config_file_iterator<char>::getline(std::string&)':
util.cpp:(.text._ZN5boost15program_options6detail26basic_config_file_iteratorIcE7getlineERSs[_ZN5boost15program_options6detail26basic_config_file_iteratorIcE7getlineERSs]+0x98):
undefined reference to `boost::program_options::to_internal(std::string
const&)'
libbitcoin_util.a(libbitcoin_util_a-util.o): In function
`boost::program_options::detail::basic_config_file_iterator<char>::basic_config_file_iterator(std::istream&,
std::set<std::string, std::less<std::string>, std::allocator<std::string> >
const&, bool)':
util.cpp:(.text._ZN5boost15program_options6detail26basic_config_file_iteratorIcEC2ERSiRKSt3setISsSt4lessISsESaISsEEb[_ZN5boost15program_options6detail26basic_config_file_iteratorIcEC5ERSiRKSt3setISsSt4lessISsESaISsEEb]+0x21):
undefined reference to
`boost::program_options::detail::common_config_file_iterator::common_config_file_iterator(std::set<std::string,
std::less<std::string>, std::allocator<std::string> > const&, bool)'
libbitcoin_wallet.a(libbitcoin_wallet_a-db.o): In function
`CDBEnv::Verify(std::string const&, bool (*)(std::string const&, std::string&),
std::string&)':
db.cpp:(.text+0x6812): undefined reference to `Db::verify(char const*, char
const*, std::ostream*, unsigned int)'
libbitcoin_wallet.a(libbitcoin_wallet_a-db.o): In function
`CDBEnv::Salvage(std::string const&, bool,
std::vector<std::pair<std::vector<unsigned char, std::allocator<unsigned char>
>, std::vector<unsigned char, std::allocator<unsigned char> > >,
std::allocator<std::pair<std::vector<unsigned char, std::allocator<unsigned
char> >, std::vector<unsigned char, std::allocator<unsigned
char> > > > >&)':
db.cpp:(.text+0x6e81): undefined reference to `Db::verify(char const*, char
const*, std::ostream*, unsigned int)'
collect2: error: ld returned 1 exit status
Error while executing c++ -o .libs/bitcoind -pthread -Wstack-protector
-fstack-protector-all -fPIE -O2 -pipe -std=c++14 -Wl,-z -Wl,relro -Wl,-z
-Wl,now bitcoind-bitcoind.o libbitcoin_server.a libbitcoin_common.a
libbitcoin_util.a libbitcoin_wallet.a libbitcoin_zmq.a libbitcoin_consensus.a
crypto/libbitcoin_crypto.a leveldb/libleveldb.a leveldb/libleveldb_sse42.a
leveldb/libmemenv.a -L.libs -lunivalue -lsecp256k1 -lboost_system -lc++
-lc++abi -lpthread -lm -lboost_filesystem -lboost_program_options-mt
-lboost_thread-mt -lboost_system-mt -lboost_chrono-mt -ldb_cxx -lssl -lcrypto
-lminiupnpc -levent_pthreads -levent_extra -levent_core -lzmq -lsodium
-Wl,-rpath-link,/usr/local/lib
gmake[2]: *** [Makefile:3677: bitcoind] Error 2
gmake[2]: Leaving directory '/usr/ports/pobj/bitcoin-0.16.0/bitcoin-0.16.0/src'
gmake[1]: *** [Makefile:9449: all-recursive] Error 1
gmake[1]: Leaving directory '/usr/ports/pobj/bitcoin-0.16.0/bitcoin-0.16.0/src'
gmake: *** [Makefile:735: all-recursive] Error 1
*** Error 2 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2701
'/usr/ports/pobj/bitcoin-0.16.0/.build_done')
*** Error 1 in /usr/ports/mystuff/openbsd-wip/net/bitcoin
(/usr/ports/infrastructure/mk/bsd.port.mk:2380 'all')