boost库是C++标准库,跨平台的,主页为http://www.boost.org/ ,代码和文档都可以在首页中找到下载
与其说此库是作为STL的代替者,不如说此库属于C++的更高一级封装,功能性封装。以个人的理解来看,有如下的分类
C++ | STL | boost | ACE |
面向对象 | 容器,算法 | 功能封装 | 框架提供 |
把同属性逻辑封装在一起 | vector,快排算法 | 日志功能,异步网络回调 | 完整的异构网络通讯框架 |
本系列的目标是可以看着文章直接一步步的开始使用boost库,而非对boost进行详细的分析。最理想的情况是本系统提供的代码可以
直接复制粘贴到各位的程序中去,若能用上,请留言告知一下,感谢:)
一. boost库适合人群
开源代码库非常的多,为何要选择boost库作为开发库,这里存在一个适用的范围,总结如下
1. 跨平台工作需要。若你的代码需要在多个平台上运行,则boost的良好兼容性会让你的麻烦减少很多,如果你用的是Mac OS,相信会更有体会
2. 并非追求极致性能。boost库性能不错,但是,并不适合于极高性能要求的场合,例如腾讯,网易类的数万并发接入的服务器中。当然了,
这类的性能极致要求的场合并不多见,所以,boost库一般情况下适用于大部分场合。
3. 对于基础知识有概念但又没有太多实践的开发者。如资源池,直接
4. 多线程开发者。boost库大部分容器或功能都是线程安全的,可以简单的放心使用。
5. 对安装,使用要求简单者。有很多开发库本身对其他库的依赖性很高,安装本身就比较费劲,boost安装相对简单,大部分情况下使用则仅仅
要求include头文件即可,几乎不用改Makefile,非常方便。
6. 想学习库的实现者,boost几乎所有代码都在头文件hpp中实现,且有大量注释,精简,使用IDE定位也方便,阅读起来比较流畅。
个人认为boost库的缺点在于,模板用得较多,一旦编译出错,一大堆的错误信息会让人很是头晕。
第二个认为的缺点是,boost库在中国使用的人群貌似也不太大,中文资料相对缺乏。
二. BOOST库的安装
由于本人熟悉Linux环境,故安装过程都为Linux下的环境,安装之前,需要确认是否安装了zlib及libicu,这两个库对boost还是相当重要,
一个是压缩库,一个是unicode库。
先执行yum安装对应的包,
yum install zlib-devel.x86_64 libicu-devel.x86_64
然后运行
./bootstrap.sh --prefix=/usr/local
检查完你的C++环境后,就可以执行
./b2 install
即可
输出如下
Performing configuration checks
- 32-bit : no (cached)
- 64-bit : yes (cached)
- arm : no (cached)
- mips1 : no (cached)
- power : no (cached)
- sparc : no (cached)
- x86 : yes (cached)
error: No best alternative for libs/coroutine/build/allocator_sources
next alternative: required properties: <link>static <target-os>windows <threading>multi
not matched
next alternative: required properties: <link>static <segmented-stacks>on <threading>multi
not matched
next alternative: required properties: <link>static <threading>multi
not matched
- has_icu builds : yes (cached)
这里看到,会有这些报错,这是1.54.0的小bug,需要把 libs/coroutine/build/Jamfile.v2 文件下的
explicit yield_sources ;
改为
explicit allocator_sources ;
即可,注意,分号不能和sources连在一起,否则编译肯定报错。
另外,若需要mpi的支持,则应该先安装openmpi,然后在boost目录中增加user-config.jam 文件,文件中写入using mpi ;
即可。
由于安装在/usr/local下,所以记得把/usr/local/lib及/usr/local/lib64也加载到ldconfig里面去,执行
echo "/usr/local/lib" >> /etc/ld.so.conf.d/boost.conf
echo "/usr/local/lib64" >> /etc/ld.so.conf.d/boost.conf
ldconfig -v
三. 测试
安装完毕后,可以写个简单的测试文件,看看安装效果
#include <boost/swap.hpp>
#include <iostream>
using namespace std;
int main() {
int a =5;
int b =1;
boost::swap(a,b);
cout << "a=" << a << ", b=" << b << endl;
}
boost的swap功能生效,boost库安装成功。