【问题标题】:Undefined references Boost 1.68.0未定义的引用 Boost 1.68.0
【发布时间】:2018-08-28 15:33:45
【问题描述】:

尝试设置 boost 库并编译/运行一些 boost 教程,但遇到了问题。我用谷歌搜索并尝试了一些东西,但似乎没有任何效果。如果你们能指出我正确的方向,将不胜感激。

这是命令行的输出:

g++ -I /usr/local/boost_1_68_0/ timer.cpp -o timer /tmp/ccLjn1qn.o:在函数boost::system::system_category()': timer.cpp:(.text._ZN5boost6system15system_categoryEv[_ZN5boost6system15system_categoryEv]+0x7): undefined reference toboost::system::detail::system_category_instance' /tmp/ccLjn1qn.o:在函数boost::system::generic_category()': timer.cpp:(.text._ZN5boost6system16generic_categoryEv[_ZN5boost6system16generic_categoryEv]+0x7): undefined reference toboost::system::detail::generic_category_instance' /tmp/ccLjn1qn.o:在函数boost::asio::detail::posix_event::posix_event()': timer.cpp:(.text._ZN5boost4asio6detail11posix_eventC2Ev[_ZN5boost4asio6detail11posix_eventC5Ev]+0x4d): undefined reference topthread_condattr_setclock' /tmp/ccLjn1qn.o:在函数boost::asio::detail::posix_thread::~posix_thread()': timer.cpp:(.text._ZN5boost4asio6detail12posix_threadD2Ev[_ZN5boost4asio6detail12posix_threadD5Ev]+0x26): undefined reference topthread_detach' /tmp/ccLjn1qn.o:在函数boost::asio::detail::posix_thread::join()': timer.cpp:(.text._ZN5boost4asio6detail12posix_thread4joinEv[_ZN5boost4asio6detail12posix_thread4joinEv]+0x2b): undefined reference topthread_join' /tmp/ccLjn1qn.o:在函数boost::asio::basic_waitable_timer<std::chrono::_V2::steady_clock, boost::asio::wait_traits<std::chrono::_V2::steady_clock> >::basic_waitable_timer(boost::asio::io_context&, std::chrono::duration<long, std::ratio<1l, 1000000000l> > const&)': timer.cpp:(.text._ZN5boost4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS0_11wait_traitsIS4_EEEC2ERNS0_10io_contextERKNS2_8durationIlSt5ratioILl1ELl1000000000EEEE[_ZN5boost4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS0_11wait_traitsIS4_EEEC5ERNS0_10io_contextERKNS2_8durationIlSt5ratioILl1ELl1000000000EEEE]+0x41): undefined reference toboost::system::detail::system_category_instance' /tmp/ccLjn1qn.o:在函数boost::asio::basic_waitable_timer<std::chrono::_V2::steady_clock, boost::asio::wait_traits<std::chrono::_V2::steady_clock> >::wait()': timer.cpp:(.text._ZN5boost4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS0_11wait_traitsIS4_EEE4waitEv[_ZN5boost4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS0_11wait_traitsIS4_EEE4waitEv]+0x26): undefined reference toboost::system::detail::system_category_instance' /tmp/ccLjn1qn.o:在函数boost::asio::detail::deadline_timer_service<boost::asio::detail::chrono_time_traits<std::chrono::_V2::steady_clock, boost::asio::wait_traits<std::chrono::_V2::steady_clock> > >::destroy(boost::asio::detail::deadline_timer_service<boost::asio::detail::chrono_time_traits<std::chrono::_V2::steady_clock, boost::asio::wait_traits<std::chrono::_V2::steady_clock> > >::implementation_type&)': timer.cpp:(.text._ZN5boost4asio6detail22deadline_timer_serviceINS1_18chrono_time_traitsINSt6chrono3_V212steady_clockENS0_11wait_traitsIS6_EEEEE7destroyERNSA_19implementation_typeE[_ZN5boost4asio6detail22deadline_timer_serviceINS1_18chrono_time_traitsINSt6chrono3_V212steady_clockENS0_11wait_traitsIS6_EEEEE7destroyERNSA_19implementation_typeE]+0x29): undefined reference toboost::system::detail::system_category_instance' collect2:错误:ld 返回 1 个退出状态

【问题讨论】:

标签: c++ boost


【解决方案1】:

您需要了解链接库(如-l boost_system -l boost_thread -l boost_asio)。 Boost 文档应该有usage examples.

【讨论】:

  • 我已尝试链接库,但仍有问题。经过更多搜索后,我得到了 timer.cpp 编译,但是当我运行它时失败了。 > $ g++ -I /usr/local/boost_1_68_0/ timer.cpp -o timer -l boost_system -lpthread $ ./timer ./timer:加载共享库时出错:libboost_system.so.1.68.0:无法打开共享对象文件: 没有这样的文件或目录
  • 备案:在ld(链接器)路径中找不到您的共享对象。这意味着您需要安装该库以使其普遍可用,或者您需要设置LD_LIBRARY_PATH 以在运行依赖于它的可执行文件之前包含您的共享对象的目录。
猜你喜欢
  • 2015-08-23
  • 1970-01-01
  • 2012-11-08
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
相关资源
最近更新 更多