我正在尝试学习如何使用C Boost.Thread库.我在我的Ubuntu 11.10系统上安装了Boost库.我正在关注Schaling的“The Boost C Libraries”一书 – 特别是第66页的示例6.1.我正在尝试编译以下代码示例:
- #include <boost/thread.hpp>
- #include <iostream>
- void wait(int seconds)
- {
- boost::this_thread::sleep(boost::posix_time::seconds(seconds));
- }
- void thread()
- {
- for(int i = 0; i < 5; ++i)
- {
- wait(1);
- std::cout << i << std::endl;
- }
- }
- int main()
- {
- boost::thread t(thread);
- t.join();
- }
但是,当我从命令行使用以下代码编译它时:
- $g++ example61.cpp -o example61 -I /usr/local/include
我得到以下输出:
- /tmp/cc6bVu1F.o: In function `main':
- example6.cpp:(.text+0x9d): undefined reference to `boost::thread::join()'
- example6.cpp:(.text+0xae): undefined reference to `boost::thread::~thread()'
- example6.cpp:(.text+0xc6): undefined reference to `boost::thread::~thread()'
- /tmp/cc6bVu1F.o: In function `boost::detail::thread_data_base::thread_data_base()':
- example6.cpp:(.text._ZN5boost6detail16thread_data_baseC2Ev[_ZN5boost6detail16thread_data_baseC5Ev]+0x24): undefined reference to `vtable for boost::detail::thread_data_base'
- /tmp/cc6bVu1F.o: In function `void boost::this_thread::sleep<boost::posix_time::seconds>(boost::posix_time::seconds const&)':
- example6.cpp:(.text._ZN5boost11this_thread5sleepINS_10posix_time7secondsEEEvRKT_[void boost::this_thread::sleep<boost::posix_time::seconds>(boost::posix_time::seconds const&)]+0x35): undefined reference to `boost::this_thread::sleep(boost::posix_time::ptime const&)'
- /tmp/cc6bVu1F.o: In function `boost::thread::thread<void (*)()>(void (*)(),boost::disable_if<boost::is_convertible<void (*&)(),boost::detail::thread_move_t<void (*)()> >,boost::thread::dummy*>::type)':
- example6.cpp:(.text._ZN5boost6threadC2IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4_EEEEPNS0_5dummyEE4typeE[_ZN5boost6threadC5IPFvvEEET_NS_10disable_ifINS_14is_convertibleIRS4_NS_6detail13thread_move_tIS4_EEEEPNS0_5dummyEE4typeE]+0x30): undefined reference to `boost::thread::start_thread()'
- /tmp/cc6bVu1F.o: In function `boost::detail::thread_data<void (*)()>::~thread_data()':
- example6.cpp:(.text._ZN5boost6detail11thread_dataIPFvvEED2Ev[_ZN5boost6detail11thread_dataIPFvvEED5Ev]+0x1f): undefined reference to `boost::detail::thread_data_base::~thread_data_base()'
- /tmp/cc6bVu1F.o:(.rodata._ZTIN5boost6detail11thread_dataIPFvvEEE[typeinfo for boost::detail::thread_data<void (*)()>]+0x10): undefined reference to `typeinfo for boost::detail::thread_data_base'
- collect2: ld returned 1 exit status
我不知道怎么解释这个.有人可以帮忙吗?非常感谢!