2013-12-22 6 views
2

Я пытаюсь построить к кошелькому бездонный кошелек Дожей (похоже на биткойн), кажется, что Boost вызывает ошибку, но я понятия не имею, как это исправить.undefined ссылка на `boost :: this_thread:

(Ubuntu 12.04)

Когда я выполняю "сделать -f Makefile.unix USE_UPNP = -" Я получаю эту ошибку:

/bin/sh ../share/genbuild.sh obj/build.h 
g++ -O2 -pthread -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -g -DUSE_IPV6 -DBOOST_SPIRIT_THREADSAFE -I/root/dogecoin/src -I/root/dogecoin/src/obj -DHAVE_BUILD_INFO -fno-stack-protector -fstack-protector-all -Wstack-protector -D_FORTIFY_SOURCE=2 -o dogecoind obj/version.o obj/checkpoints.o obj/netbase.o obj/addrman.o obj/crypter.o obj/key.o obj/db.o obj/init.o obj/irc.o obj/keystore.o obj/main.o obj/net.o obj/protocol.o obj/bitcoinrpc.o obj/rpcdump.o obj/rpcnet.o obj/rpcrawtransaction.o obj/script.o obj/scrypt.o obj/sync.o obj/util.o obj/wallet.o obj/walletdb.o obj/noui.o -Wl,-z,relro -Wl,-z,now -Wl,-Bdynamic -l boost_system -l boost_filesystem -l boost_program_options -l boost_thread -l db_cxx -l ssl -l crypto -Wl,-Bdynamic -l z -l dl -l pthread 
obj/db.o: In function `CAddrDB::Write(CAddrMan const&)': 
/root/dogecoin/src/db.cpp:764: undefined reference to `RenameOver(boost::filesystem3::path, boost::filesystem3::path)' 
obj/init.o: In function `AppInit2()': 
/root/dogecoin/src/init.cpp:450: undefined reference to `CreatePidFile(boost::filesystem3::path const&, int)' 
obj/main.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/main.o: In function `sleep': 
/usr/local/include/boost/thread/pthread/thread_data.hpp:249: undefined reference to `boost::this_thread::hiden::sleep_until(timespec const&)' 
obj/main.o: In function `space': 
/usr/local/include/boost/filesystem/operations.hpp:520: undefined reference to `boost::filesystem::detail::space(boost::filesystem::path const&, boost::system::error_code*)' 
obj/main.o: In function `sleep': 
/usr/local/include/boost/thread/pthread/thread_data.hpp:249: undefined reference to `boost::this_thread::hiden::sleep_until(timespec const&)' 
obj/main.o: In function `boost::thread::start_thread()': 
/usr/local/include/boost/thread/detail/thread.hpp:180: undefined reference to `boost::thread::start_thread_noexcept()' 
obj/bitcoinrpc.o: In function `sleep': 
/usr/local/include/boost/thread/pthread/thread_data.hpp:249: undefined reference to `boost::this_thread::hiden::sleep_until(timespec const&)' 
obj/bitcoinrpc.o: In function `boost::filesystem::path::has_root_directory() const': 
/usr/local/include/boost/filesystem/path.hpp:444: undefined reference to `boost::filesystem::path::root_directory() const' 
obj/bitcoinrpc.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/bitcoinrpc.o: In function `exists': 
/usr/local/include/boost/filesystem/operations.hpp:289: undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)' 
obj/bitcoinrpc.o: In function `boost::filesystem::path::has_root_directory() const': 
/usr/local/include/boost/filesystem/path.hpp:444: undefined reference to `boost::filesystem::path::root_directory() const' 
obj/bitcoinrpc.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/bitcoinrpc.o: In function `exists': 
/usr/local/include/boost/filesystem/operations.hpp:289: undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)' 
obj/bitcoinrpc.o: In function `call_once<void (*)()>': 
/usr/local/include/boost/thread/pthread/once_atomic.hpp:145: undefined reference to `boost::thread_detail::enter_once_region(boost::once_flag&)' 
/usr/local/include/boost/thread/pthread/once_atomic.hpp:157: undefined reference to `boost::thread_detail::commit_once_region(boost::once_flag&)' 
/usr/local/include/boost/thread/pthread/once_atomic.hpp:153: undefined reference to `boost::thread_detail::rollback_once_region(boost::once_flag&)' 
/usr/local/include/boost/thread/pthread/once_atomic.hpp:145: undefined reference to `boost::thread_detail::enter_once_region(boost::once_flag&)' 
/usr/local/include/boost/thread/pthread/once_atomic.hpp:157: undefined reference to `boost::thread_detail::commit_once_region(boost::once_flag&)' 
/usr/local/include/boost/thread/pthread/once_atomic.hpp:153: undefined reference to `boost::thread_detail::rollback_once_region(boost::once_flag&)' 
obj/util.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/util.o: In function `path<char*>': 
/usr/local/include/boost/filesystem/path.hpp:139: undefined reference to `boost::filesystem::path::codecvt()' 
obj/util.o: In function `system_complete': 
/usr/local/include/boost/filesystem/operations.hpp:531: undefined reference to `boost::filesystem::detail::system_complete(boost::filesystem::path const&, boost::system::error_code*)' 
obj/util.o: In function `is_directory': 
/usr/local/include/boost/filesystem/operations.hpp:294: undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)' 
obj/util.o: In function `create_directory': 
/usr/local/include/boost/filesystem/operations.hpp:405: undefined reference to `boost::filesystem::detail::create_directory(boost::filesystem::path const&, boost::system::error_code*)' 
obj/util.o: In function `GetDataDir(bool)': 
/root/dogecoin/src/util.cpp:1029: undefined reference to `boost::filesystem::path::operator/=(char const*)' 
obj/util.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/util.o: In function `boost::filesystem::path::has_root_directory() const': 
/usr/local/include/boost/filesystem/path.hpp:444: undefined reference to `boost::filesystem::path::root_directory() const' 
obj/util.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/util.o: In function `boost::filesystem::path::has_root_directory() const': 
/usr/local/include/boost/filesystem/path.hpp:444: undefined reference to `boost::filesystem::path::root_directory() const' 
obj/util.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/walletdb.o: In function `sleep': 
/usr/local/include/boost/thread/pthread/thread_data.hpp:249: undefined reference to `boost::this_thread::hiden::sleep_until(timespec const&)' 
obj/walletdb.o: In function `operator/': 
/usr/local/include/boost/filesystem/path.hpp:648: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)' 
obj/walletdb.o: In function `is_directory': 
/usr/local/include/boost/filesystem/operations.hpp:294: undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)' 
obj/walletdb.o: In function `copy_file': 
/usr/local/include/boost/filesystem/operations.hpp:381: undefined reference to `boost::filesystem::detail::copy_file(boost::filesystem::path const&, boost::filesystem::path const&, boost::filesystem::copy_option::enum_type, boost::system::error_code*)' 
obj/walletdb.o: In function `sleep': 
/usr/local/include/boost/thread/pthread/thread_data.hpp:249: undefined reference to `boost::this_thread::hiden::sleep_until(timespec const&)' 
obj/walletdb.o: In function `operator/=<std::basic_string<char> >': 
/usr/local/include/boost/filesystem/path.hpp:302: undefined reference to `boost::filesystem::path::codecvt()' 
obj/walletdb.o: In function `boost::filesystem::path& boost::filesystem::path::append<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::codecvt<wchar_t, char, __mbstate_t> const&)': 
/usr/local/include/boost/filesystem/path.hpp:707: undefined reference to `boost::filesystem::path::m_append_separator_if_needed()' 
/usr/local/include/boost/filesystem/path.hpp:710: undefined reference to `boost::filesystem::path::m_erase_redundant_separator(unsigned long)' 
collect2: ld returned 1 exit status 
make: *** [dogecoind] Error 1 

ответ

3

Вам нужно связать против этих библиотек Boost, то есть добавить -lboost_thread -lboost_filesystem -lboost_system к вашим линкерам команд.

Для получения более подробной информации см. Link Your Program to a Boost Library.

+2

Makefile, уже заботится о том, что это что-то другое –

+0

добавьте BOOST_LIBS * = поток в ваш .pro-файл вместе с этим также добавьте include (../ projectincludes/boost.pri), где в boost.pri есть пути. –

1

У меня была такая же проблема, используя boost 1.55.0.

Я использовал нм на библиотеках наддува, и ни один не содержал какой-либо символ, содержащий filesystem3

Я предполагаю, что повышение 1.55.0 удален filesystem3, возможно, положить его в заголовок только шаблон, но это только предположение. Я связывал mongodbclient.a, и я не хотел перекомпилировать mongo из источника (для этого требуется множество настроек)

Перемещение к boost 1.49.0 устраняет проблему. Эти библиотеки имели в них файловую систему3.

0

У меня были те же проблемы, что и при использовании boost 1.62.

Однако, в моем случае, поскольку я установил несколько улучшенных версий на моем Ubuntu 16.04, указание библиотек и каталога include на правильные папки помогло.

Я сделал символические ссылки для папки включают в себя и в папку библиотеки (автоматически делается путем установки повышающего):

/usr/include/boost -> /usr/local/boost_1_62_0/boost

и

/usr/local/lib/libboost_thread.so -> libboost_thread.so.1.62.0

Смежные вопросы