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程序。
祝大家好运!