linux下boost裁剪笔记

  最近在开发c++项目,遇到大量使用正则表达式。由于windows上使用vs2022,工具集版本比较高对c++11属性支持的比较好,没遇到什么问题。但是到了linux中,由于gcc版本比较老,编译直接报错。经过排查是正则表达不支持。最后考虑使用boost库,但是boost库很大,项目只需要使用其中的正则功能,所以裁剪出正则使用。从而避免升级gcc,以适配当前服务器环境。

1. 裁剪流程

  在了解boost裁剪操作之前,梳理清楚裁剪的步骤流程。boost的裁剪流程总共分成三部分,如下图:

  1. 源码下载
  2. 生成裁剪编译工具
  3. 裁剪生成需要的boost库

请添加图片描述

2. 操作过程详解:

  1. 源码下载

  文档地址:https://theboostcpplibraries.com/

  下载地址:https://www.boost.org/users/history/
请添加图片描述

  进入官网,选择需要的版本进行下载,解压到出来,即得到源码。我下载的是linux环境下的包。

  1. 生成裁剪编译工具b2

  boost是比较通用的库,所以提供了裁剪编译工具。但是需要用户编译生成。

  源码解压后的目录如下:
请添加图片描述

  该目录中有一个bootstrap.sh的脚本文件,直接执行该文件就可以生成裁剪编译工具b2。执行脚本命令./bootstrap.sh后目录如下:

请添加图片描述
  从上图对比中可看到生成’b2’工具。

3. 裁剪boost库

  b2裁剪boost库有很多参数可是使用。使用 ./b2 --help可以查看各个参数。这里主要介绍重要的几个参数。

   `./b2 install --prefix=./install --toolset=gcc --with-regex link=shared runtime-link=shared threading=multi address-model=64 architecture=x86 variant=debug,release`

install:安装头文件和编译的库文件到指定的目录。

–prefix :安装头文件和库文件的指定目录。

–toolset:编译使用的工具集

–with-:需要打包的组件 --without-:不需要打包的组件

link: 生成连接库为动态或者静态 =shared =static

runtime-link: 运行时库为动态或者 静态
threading=multi: 多线程编译:将一个源文件分解成多个部分并分别交给多个线程去编译,以提高编译速度。

address-model=64 architecture=x86 :运行在x86架构的64位操作系统上
variant=debug,release : 库的类型

  我使用最简单的编译指令:./b2 install --with-regex --prefix=./install会自动生成动态库和静态库。安装的文件如下:

请添加图片描述
  从图中可看到install文件夹中生成了两个文件夹。include文件夹包含了所有的头文件。lib文件夹则是 库地址。由于最简命令没有指定生成库的类型,默认同事生成了静态库和动态库 ,如下图。

请添加图片描述

4. 备注:boost中所有库目录:

  通过命令./b2 --show-libraries可查看当前boost所有的库,供裁剪使用。
请添加图片描述

猜你喜欢

转载自blog.csdn.net/qq_41546984/article/details/131094556