linux下安装boost及boost::thread的使用

1.0 前言

由于项目需要,初次接触boost,难免要面临安装调试的问题。由于boost库的发展还比较短,网上的中文资料也比较少,自己走了不少弯路,在这里把自己检验过的正确的方法写下来,希望能对后面的学习者有所帮助。本文主要参考了boost.org中的get start文档和Stack Overflow网站中的部分内容。

1.1 环境

Ubuntu 10.04, boost 1.49(http://www.boost.org/users/download/

 

2.0 boost的安装

下载到 boost_1_49_0.tar.bz2 (当然,其他压缩格式也可以)后,可以把它放在用户目录下,即:~/

解压缩:tar -jxvf boost_1_49_0.tar.bz2

这样,出现文件夹:~/boost_1_49_0

然后进入:$ cd boost_1_49_0

你会发现有一个sh命令:bootstrap.sh

运行它:$ ./bootstrap.sh     (boost自己的get start文档中说设置参数 --prefix=dir 其中dir为你想指定的安装文件夹,我建议就不用加这个参数,它会默认安装到/usr/local)

结束后出现一个可执行文件: ~/boost_1_49_0/b2

运行这个文件: $ sudo ./b2 install   (Ubuntu用户千万别忘了加sudo,不然安装后将无法完全使用)

编译安装时间比较长,根据不同机器的情况20~40分钟。结束后即安装完毕。

 

3.0 boost::thread的使用

在这将一个简单的多线程的例子附上,方便大家测试,文件名为 example.cpp
 
  1. #include <boost/thread.hpp>

  2. #include <iostream>

  3.  
  4. void task1() {

  5. // do stuff

  6. std::cout << "This is task1!" << std::endl;

  7. }

  8.  
  9. void task2() {

  10. // do stuff

  11. std::cout << "This is task2!" << std::endl;

  12. }

  13.  
  14. int main (int argc, char ** argv) {

  15. using namespace boost;

  16. thread thread_1 = thread(task1);

  17. thread thread_2 = thread(task2);

  18.  
  19. // do other stuff

  20. thread_2.join();

  21. thread_1.join();

  22. return 0;

  23. }

编译时的命令为:
$ g++ -I./inlcude -L./lib example.cpp -lboost_thread -o example
编译之后会出现一个 example 的可执行文件,可以运行:./example , 结果显示:
This is task2!
This is task1!

可能你在运行时会出现这样的错误:error while loading shared libraries: libboost_thread.so.1.49.0: cannot open shared object file: No such file or directory

这是因为要用到的库不在默认的环境变量里,可以使用下面的命令添加:
$ sudo ldconfig /usr/local/lib

添加后,再执行./example,这样你就完成了你的第一个boost::thread程序。

 

祝大家好运!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值