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所有的库,供裁剪使用。
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值