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
#include <boost/thread.hpp>
#include <iostream>

void task1() { 
    // do stuff
    std::cout << "This is task1!" << std::endl;
}

void task2() { 
    // do stuff
    std::cout << "This is task2!" << std::endl;
}

int main (int argc, char ** argv) {
    using namespace boost; 
    thread thread_1 = thread(task1);
    thread thread_2 = thread(task2);

    // do other stuff
    thread_2.join();
    thread_1.join();
    return 0;
}

编译时的命令为:
$ 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程序。


祝大家好运!


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值