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裁剪笔记 的相关文章

  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 视觉目标检测和识别之过去,现在及可能(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属性支持的比较好 没遇到什么问题 但是