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

本文详细介绍了如何在Ubuntu环境下安装Boost库,并通过一个简单的多线程例子展示了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
#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程序。


祝大家好运!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值