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

本文详细介绍Boost库在Ubuntu10.04环境下的安装步骤,并通过实例展示boost::thread的具体应用,帮助初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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程序。

 

祝大家好运!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值