Boost(1):Boost库简介及安装

1. Boost库介绍

Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,在1998年由Beman G.Dawes发起倡议并建立。使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简洁、优雅、灵活和高效。

Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。大部分Boost库功能的使用之需要包括相应的头文件即可,少数需要连接库。

1.1 获取方式

Boost社区根据目标平台的操作提供了Linux和Windows版本,支持预编译版本和源代码版本的安装。

# 官方网站
https://www.boost.org/

# 下载地址
https://www.boost.org/users/download/

# 预编译版本下载地址
https://sourceforge.net/projects/boost/files/boost-binaries/


1.2 代码结构

最上层结构

boost_1_73_0$ tree -L 1 -d
├── boost                 # 最重要的目录和说明文件
├── doc                   # HTML 格式的文档,也可以生成PDF格式文档
├── libs                  # 所有组件的示例、测试、编译代码和说明文档
├── more                  # 库作者相关的文档
├── status                # 可用于测试Boost库的各个组件
└── tools                 # b2、quickbook等自带工具

Boost目录结构
boost子目录里面包含了我们可能使用到的所有的库代码,按照类型分别放在不同的目录中,通常我们只要关心这个目录就够了。

/boost_1_73_0/boost$ tree -d -L 1
├── accumulators          # 累加器库
├── algorithm             # 算法库
├── align                 # 内存对齐库
├── archive               # 序列化库
├── asio                  # 异步并发库
├── assert                # 断言库
├── assign                # 赋值初始化库
├── atomic                # 原子操作库
├── beast
├── bimap                # 双向关联数组
├── bind                 # bind表达式
├── callable_traits
├── chrono               # 时间处理库
...
├── python               # python库
...


1.3 使用方式

在安装环境后,使用大部分的Boost库只需要在自己的源代码里包含对应库的头文件即可。如:

#include <boost/python.hpp>
#include <boost/python/list.hpp>
#include <boost/python/module.hpp>
#include <boost/assert.hpp>


2. 开发环境安装

2.1 Windows环境安装

这里介绍在Windows环境下安装预编译版本的boost库,以Boost_1.73.0为例。

预编译版本安装比较简单,只要下载指定版本并安装就可以。

1. 下载boost_1_73_0

预编译版本下载地址为:
https://astuteinternet.dl.sourceforge.net/project/boost/boost-binaries/1.73.0/boost_1_73_0-msvc-14.0-64.exe

2. 安装

双击安装在C:\boost_1_73_0

3. boost与python版本对照

完全安装下会安装Python库,而Python库与当前系统下的python版本存在对应关系,可根据下表查找相应的boost库。

boost python
1_73_0 3.8.2
1_72_0 3.8.0
1_71_0 3.7.4
1_70_0 3.7.2
1_69_0 3.7.0


2.2 Linux环境安装

这里介绍使用源代码编译安装的方式,以Boost_1.73.0为例

1. 下载源代码

wget https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.bz2 --no-check-certificate

2. 编译安装

tar xvf boost_1_73_0.tar.bz2

cd boost_1_73_0

./boostrap.sh
./b2 --buildtype=complete install

boost有大量的库其实可以选择安装指定的库,这里为了方便我选择完全安装。

安装boost库时我直接按照默认的路径安装,最后会在/usr/local/lib目录下安装所有编译的libboost*库。如果需要指定路径,可以在编译时添加"–prefix=xxx"的路径参数,这样的话在安装后还需要手动将该路径添加到环境变量中。

如果系统中有多个python版本,可以通过"–with-python=python*"来指定python版本,默认情况下使用系统默认的版本。

3. 定制安装

完整编译费时费力,而且大部分的库可能在我们的开发过程中根本用不到,所以用户可以自行选择要编译的库。
相关执行命令如下:

查看所有必须编译才能使用的库

./b2 --show-libraries

在完全编译命令的基础上,使用–with或–without选项可以打开或者关闭某个库的编译,如:

./b2 --with-date_time --buildtype=complete install

将仅编译安装data_time库

3. 参考资料

《Boost程序库完全开发指南》
https://www.boost.org/doc/libs/1_73_0/

上一篇:rtabmap建图报错问题


下一篇:Boost的反射库PFR