linux下boost裁剪笔记

2023-10-29

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下boost裁剪笔记 的相关文章

随机推荐

  • 视觉目标检测和识别之过去,现在及可能(2017.06.28)

    计算机视觉中目标检测 跟踪 识别是最基本的几个task 尤其又以检测最为重要和基础 同时基本上所有的检测任务都需要在给出物体的bounding box之后 给出物体的类别 也就是给识别物体 所以文章中不区分检测和识别任务 笔者从事计算机视觉
  • JDBC三步连接MySql

    一 导入依赖文件 编写配置文件 在依赖文件中添加JDBC的依赖文件 如果是Maven项目也可以在Pom xml中导入依赖 文件下载 https pan baidu com s 1ktMMhzG8cHKOa 2VpcqvrQ pwd 882i
  • Ansible-playbook-roles安装lnmp

    使用roles安装lnmp nginx 1 准备四台主机 192 168 142 10 192 168 142 20 192 168 142 30 192 168 142 40 2 10作为ansible管理端 首先ssh连接剩下三台主机
  • SQLServer复习笔记

    目录 第一章 关系数据库基础 第二章 SQLServer基础 第三章 数据库创建与管理 第四章 SQL基础 第五章 架构与基本表 第六章 数据操作语言 第七章 高级查询 第八章 索引 第九章 视图 补充 第一章 关系数据库基础 基本概念 数
  • javascript判断对象有没有某个属性

    定义一个动物类 function Animal name 属性 this name name Animal 实例方法 this sleep function console log this name 正在睡觉 Animal prototy
  • Apache Beam开发指南

    本指南用于指导Beam用户使用Beam SDK创建数据处理pipeline pipeline 本文会引导您用BeamSDK类构建和测试你的pipeline 本文不会详尽阐述所有内容 但可以看做一门未知的 编程语言 引导您用编程的方式构建您的
  • JDBC连接oracle RAC数据库配置

    RAC的配置如下 node1 ip地址192 168 60 132 实例名 rac1 主机名 rac1 node2 ip地址192 168 60 144 实例名 rac2 主机名 rac2 RAC服务名为oratest 我的应用服务器为ap
  • Json串的单引号和双引号问题

    今天遇到双引号和单引号的问题 json就是一段有格式的字符串 如果数据的封装与解析都是我们自己做的时候 单引号和双引号是没啥关系的 但是如果用到一些别的json相关的库的时候 或者像笔者这样是发给别人用的时候 这个就特别需要注意了 所以应该
  • 淘宝购物车页面 智能搜索框Ajax异步加载数据

    如果有朋友对本篇文章的一些知识点不了解的话 可以先阅读此篇文章 在这篇文章中 我大概介绍了一下构建淘宝购物车页面需要的基础知识 这篇文章主要探讨的是智能搜索框Ajax异步加载数据 jQuery的社区非常的活跃 许多朋友都在不同地方分享了很多
  • Java实现利用正则表达式校验手机号码,邮箱,电话号码

    需求 校验手机号码 邮箱 电话号码 实现代码 package apilambda d6 regex import java util Scanner public class RegexTest2 public static void ma
  • Linux使用gpu渲染桌面,WSL将支持GPU计算,并可运行Linux GUI应用

    原标题 WSL将支持GPU计算 并可运行Linux GUI应用 在刚刚召开的微软 Build 2020 大会上 传来不少有关 WSL 的新消息 这篇文章将一并整理 逐一介绍 其中 本月就可实现的包括以下这两项 随着 2020 年 5 月更新
  • python 爬虫 POST请求

    import requests 导入网络请求模块requests import json 导入json模块 字典类型的表单参数 data 1 能力是有限的 而努力是无限的 2 星光不问赶路人 时光不负有心人 发送网络请求 response
  • Spring Boot 集成 Redis

    Spring data redis 在 Spring 中整合 Redis jedis 采用的直连 多个线程操作的话 是不安全的 如果想要避免不安全的 使用 jedis pool 连接池 lettuce 采用netty 实例可以再多个线程中进
  • js基础一(补充)

    1 js概述 1 历史 1995年 js最早由Netscape的浏览器中出现 1996年 IE3中也出现了js 也称为JScript 1997年 ECMA组织制定了标准规范ECMAScript 2009年 JS遵循了CommonJS规范 开
  • Python:多路分支判断程序 输出成绩等级

    今天学习到了Python的if判断语句 根据输入的成绩 输出评定成绩 程序如下 score input 请输入成绩 手动输入成绩 score int score 将输入的字符串转换为数值 if score gt 90 and score l
  • 如何解压缩后缀名为zip.001,zip.002等的文件

    今天下了个PDF压缩包 发现不会解压 有如下几种方法 1 使用命令 打开dos界面 将文件目录切换至当前目录 假设文件名分别为 文件 01 zip 001 文件 01 zip 002 文件 01 zip 003 则在dos界面输入如下命令
  • Eclipse下编写C++

    Eclipse下运行C 程序 文章目录 Eclipse下运行C 程序 装CDT插件 测试运行C 程序 附加说明 众所周知Eclipse是常用于编写java的集成开发工具 但是像CodeBlocks和Dev C 这类集成开发工具就只能编写C或
  • SpringFramework核心技术一(IOC:注册一个LoadTimeWeaver)

    一 什么是LoadTimeWeaver 在LoadTimeWeaver用于由Spring动态变换的类 因为它们被装载到Java虚拟机 JVM 要启用加载时织入 请将其添加 EnableLoadTimeWeaving到您的某个 Configu
  • ansible主机连通性测试报错

    报错提示 root yx01 site packages ansible all m ping WARNING provided hosts list is empty only localhost is available Note th
  • linux下boost裁剪笔记

    目录 1 裁剪流程 2 操作过程详解 3 裁剪boost库 4 备注 boost中所有库目录 最近在开发c 项目 遇到大量使用正则表达式 由于windows上使用vs2022 工具集版本比较高对c 11属性支持的比较好 没遇到什么问题 但是