Boost框架
6/17/25About 2 min
Boost框架
一、简介
Boost是一个由C++社区开发和维护的高质量、开源的C++库集合,被广泛视为C++标准库的重要扩展。它由超过160个独立库组成,覆盖了从基础语言特性到高级网络编程的各个领域。许多Boost库已经被直接纳入C++标准(如 C++11/14/17/20),成为现代 C++ 的核心组成部分。
Boost官方网址:https://www.boost.org/
二、构建编译及使用
1. 判断Boost中的哪些库支持Header-Only模式
- Header-Only模式
指Boost库中部分组件仅通过头文件(.h 或 .hpp)即可使用,无需链接静态库或动态库的一种实现方式。这种模式的核心特点是将代码的声明与定义都放在头文件中,用户只需包含相应头文件,即可直接使用库功能,极大简化了编译和部署流程。
- 判断方式
cd boost
# Windows
.\bootstrap.bat
.\b2 --show-libraries
# Unix
./bootstrap.sh --show-libraries
2. 编译Boost库
(1)Windows平台
获取Boost源码
以管理员身份打开VS工具Developer Command Prompt for VS 2019,并进入Boost源码目录
运行 bootstrap.bat
编译
bjam stage --toolset=msvc-14.1 --without-python --stagedir="D:\boost_1_84_0" link=static runtime-link=shared runtime-link=static threading=multi debug release # 说明: #(1)stage/install:stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。推荐使用stage,因为install生成的include目录与D:\boost_1_84_0\boost基本一致,可直接使用. #(2)toolset:指定编译器,如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等,VS2019对应msvc版本14。 #(3)without/with:选择不编译/编译哪些库。查看boost包含库的命令是bjam --show-libraries。 #(4)stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。 #(5)build-dir:编译生成的中间文件的路径。默认在根目录下,目录名为bin.v2,等编译完成后可将这个目录全部删除。 #(6)link:生成动态链接库/静态链接库。生成动态链接库使用shared,生成静态链接库使用static。 #(7)runtime-link:动态/静态链接C/C++运行时库。有shared和static两种方式。 #(8)threading:单/多线程编译。 #(9)debug/release:编译debug/release版本。
使用方式:
- 头文件目录:D:\boost_1_84_0
- 库目录:D:\boost_1_84_0\lib
(2)Unix平台
进入Boost源码目录
cd boost_1_84_0/
生成b2
./bootstrap.sh
执行b2
sudo ./b2
安装至指定目录(将源码中的头文件和编译生成的静态库复制到指定目录)
sudo ./b2 --prefix=/home/Boost-1.84.0-aarch64 install
使用方式:
- boost_1_84_0/boost 为头文件include目录。
- boost_1_84_0/stage 为编译产生的静态库目录。
进入到lib目录下,查看编译出的库架构是否正确
file libboost_atomic.so.1.84.0
libboost_atomic.so.1.84.0: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=01d80e797ac707d09d3c659aadf458e7e10b936b, not stripped