boost之简介、编译、安装和使用
Boost库对于开发者来说,就是一个武器库,从手枪到原子弹都能找到,涉及到开发的方方面面。它复杂它功能强,所以需要一些学习成本,但学成了,我们就能更加优雅、更加高效、更加规范的开发C++程序。
具体来说Boost库包含了:字符串及文本处理、容器、迭代器、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项等方面的内容。
本文主要讲解怎么编译安装Boost和简单的示例程序。后面的文章再深入介绍Boost各模块具体的使用方法。
下一步开始编译,执行如下命令:
编译成功之后,我们将其安装到一个指定的目录。执行如下命令:
安装成功之后,我们会在/home/motadou/objs/boost/ins目录下看到这么两个文件夹:
其中include目录包含了各种模块的头文件,而lib目录包含了模块的静态库和动态库。
采用Boost静态库的编译方式。
使用如下命令编译上述源代码文件:
采用Boost动态库的编译方式。
第一步,将Boost动态库目录加入到动态库搜索路径中。使用如下命令:
修改完毕的文件如下示例:
第二步,使用ldconfig命令配置动态链接器在运行时的绑定。使用如下命令:
第三步,使用如下命令编译上述源代码文件:
使用上述两种方式都能正确编译出可执行程序。我们运行可执行程序,程序运行结果如下:
具体来说Boost库包含了:字符串及文本处理、容器、迭代器、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数学相关、纠错和测试、数据结构、输入/输出、跨语言支持、内存相关、语法分析、杂项等方面的内容。
本文主要讲解怎么编译安装Boost和简单的示例程序。后面的文章再深入介绍Boost各模块具体的使用方法。
下载
我们从Boost的官方网站下载源代码包,由于Boost库比较重,它的安装包也比较大,我下载的boost_1_72_0.tar.gz足有120M。
编译
wget https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz tar -zxvf boost_1_72_0.tar.gz cd boost_1_72_0 ./bootstrap.sh --with-libraries=all --with-toolset=gcc执行上述命令后,我们看到如下信息,表明初步构建成功:
下一步开始编译,执行如下命令:
./b2 toolset=gcc
编译成功之后,我们将其安装到一个指定的目录。执行如下命令:
./b2 install --prefix=/home/motadou/objs/boost/ins
安装成功之后,我们会在/home/motadou/objs/boost/ins目录下看到这么两个文件夹:
其中include目录包含了各种模块的头文件,而lib目录包含了模块的静态库和动态库。
示例程序
// 将该程序保存为:boost.cpp
#include <boost/thread/thread.hpp>
#include <iostream>
#include <cstdlib>
void func1()
{
static int cnt1 = 0;
for ( ; true; )
{
std::cout << "func1:" << cnt1++ << std::endl;
::sleep(1);
}
}
void func2()
{
static int cnt2 = 0;
for ( ; true; )
{
std::cout << "func2:" << cnt2++ << std::endl;
::sleep(2);
}
}
int main(int argc, char ** argv)
{
boost::thread thread1(&func1);
boost::thread thread2(&func2);
thread1.join();
thread2.join();
return 0;
}
采用Boost静态库的编译方式。
使用如下命令编译上述源代码文件:
g++ -o test boost.cpp -I/home/motadou/objs/boost/ins/include /home/motadou/objs/boost/ins/lib/libboost_thread.a -lpthread
采用Boost动态库的编译方式。
第一步,将Boost动态库目录加入到动态库搜索路径中。使用如下命令:
sudo vi /etc/ld.so.conf在该文件末尾加入/home/motadou/objs/boost/ins/lib/。
修改完毕的文件如下示例:
第二步,使用ldconfig命令配置动态链接器在运行时的绑定。使用如下命令:
sudo ldconfig
第三步,使用如下命令编译上述源代码文件:
g++ -o test boost.cpp -I/home/motadou/objs/boost/ins/include -L/home/motadou/objs/boost/ins/lib -lboost_thread -lpthread
使用上述两种方式都能正确编译出可执行程序。我们运行可执行程序,程序运行结果如下:

浙公网安备 33010602011771号