Boost笔记 1:下载、编译、安装、测试
1. 下载
当前版本是1.82,下载链接:
https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/
2. 安装编译依赖库
本地环境是Ubuntu 22.04,需要安装以下依赖库,部分影响boost相关功能的开启,部分影响编译过程。
本地环境编译AOSP源码,安装过相关依赖库,除了这里列出的可能还需要其他依赖库,可根据提示安装。
sudo apt install icu-devtools libicu-dev libbz2-dev liblzma-dev libzstd-dev python3-dev python2-dev -y
2.1 解压
解压后源码文件夹:
boost_1_82_0$ ls
boost boost.css bootstrap.sh index.html libs README.md tools
boost-build.jam boost.png doc INSTALL LICENSE_1_0.txt rst.css
boostcpp.jam bootstrap.bat index.htm Jamroot more status
2.2 执行bootstrap.sh脚本,生成b2编译工具
1)执行bootstrap.sh后,源码目录下增加b2和project-config.jam两个文件。
2)b2工具是用来编译和安装boost库。
(1)查看帮助:b2 --help
(2)编译:b2
(3)clean:b2 --clean
(4)安装:b2 install
(5)重新配置编译脚本:b2 --reconfigure
如果编译失败或者过程中发现缺少一些依赖库及boost相关模块,安装依赖库后,需要执行这个命令重新检测依赖并生成编译脚本。
$ ./bootstrap.sh
Building B2 engine..###
###
### Using 'gcc' toolset.
###
###g++ (Ubuntu 12.1.0-2ubuntu1~22.04) 12.1.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.###
###> g++ -x c++ -std=c++11 -O2 -s -DNDEBUG builtins.cpp class.cpp command.cpp compile.cpp constants.cpp cwd.cpp debug.cpp debugger.cpp execcmd.cpp execnt.cpp execunix.cpp filesys.cpp filent.cpp fileunix.cpp frames.cpp function.cpp glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam_strings.cpp jam.cpp jamgram.cpp lists.cpp make.cpp make1.cpp md5.cpp mem.cpp modules.cpp native.cpp object.cpp option.cpp output.cpp parse.cpp pathnt.cpp pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp startup.cpp subst.cpp sysinfo.cpp timestamp.cpp variable.cpp w32_getreg.cpp modules/order.cpp modules/path.cpp modules/property-set.cpp modules/regex.cpp modules/sequence.cpp modules/set.cpp -o b2
> tools/build/src/engine/b2
Detecting Python version... 2.7
Detecting Python root... /usr
Unicode/ICU support for Boost.Regex?... /usr
Generating B2 configuration in project-config.jam for gcc...Bootstrapping is done. To build, run:./b2To generate header files, run:./b2 headersThe configuration generated uses gcc to build by default. If that is
unintended either use the --with-toolset option or adjust configuration, by
editing 'project-config.jam'.Further information:- Command line help:./b2 --help- Getting started guide: http://www.boost.org/more/getting_started/unix-variants.html- B2 documentation:http://www.boost.org/build/
2.3 编译和安装
1)执行b2命令编译源码,先检测编译依赖,然后根据依赖配置进行编译。
2)成功编译后,安装:b2 install。
默认安装路径为:/usr/local/include/boost 和 /usr/local/lib/
$ ./b2
Performing configuration checks- default address-model : 64-bit [1]- default architecture : x86 [1]Building the Boost C++ Libraries.- compiler supports SSE2 : yes [2]- compiler supports SSE4.1 : yes [2]- has std::atomic_ref : no [2]- has -Wl,--no-undefined : yes [2]- has statx : yes [2]- has init_priority attribute : yes [2]- has stat::st_blksize : yes [2]- has stat::st_mtim : yes [2]- has stat::st_mtimensec : no [2]- has stat::st_mtimespec : no [2]- has stat::st_birthtim : no [2]- has stat::st_birthtimensec : no [2]- has stat::st_birthtimespec : no [2]- has fdopendir(O_NOFOLLOW) : yes [2]- has POSIX *at APIs : yes [2]- cxx11_auto_declarations : yes [2]- cxx11_constexpr : yes [2]- cxx11_defaulted_functions : yes [2]- cxx11_final : yes [2]- cxx11_hdr_mutex : yes [2]- cxx11_hdr_tuple : yes [2]- cxx11_lambdas : yes [2]- cxx11_noexcept : yes [2]- cxx11_nullptr : yes [2]- cxx11_rvalue_references : yes [2]- cxx11_template_aliases : yes [2]- cxx11_thread_local : yes [2]...(检测编译依赖)Component configuration:- atomic : building- chrono : building- container : building- context : building- contract : building- coroutine : building- date_time : building- exception : building- fiber : building- filesystem : building- graph : building- graph_parallel : building- headers : building- iostreams : building- json : building- locale : building- log : building- math : building- mpi : building- nowide : building- program_options : building- python : building- random : building- regex : building- serialization : building- stacktrace : building- system : building- test : building- thread : building- timer : building- type_erasure : building- url : building- wave : building...patience...
...patience...
...found 18844 targets...
...updating 1767 targets...... (编译源码)common.copy /home/dev/github/boost/temp/boost_1_82_0/stage/lib/libboost_wave.a
...updated 1767 targets...The Boost C++ Libraries were successfully built!The following directory should be added to compiler include paths:/home/dev/github/boost/temp/boost_1_82_0The following directory should be added to linker library paths:/home/dev/github/boost/temp/boost_1_82_0/stage/lib
2.4 测试程序
安装后,不用指定include和library path,编译时可自动搜索到。
以下测试程序可用clion或者命令行编译:
$ g++ -o main main.cpp
#include <string>
#include <iostream>
#include <boost/foreach.hpp>int main()
{std::string hello( "Hello, world!" );BOOST_FOREACH( char ch, hello ){std::cout << ch;}return 0;
}
2.5 CMake依赖
在cmake脚本中使用find_package显示引用boost:
find_package(Boost 1.82 REQUIRED COMPONENTS filesystem regex PATHS C:/Boost)
find_package(Boost 1.82 REQUIRED COMPONENTS ALL)
find_package(Boost 1.82 REQUIRED ALL)
相关文章:
Boost笔记 1:下载、编译、安装、测试
1. 下载 当前版本是1.82,下载链接: https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/ 2. 安装编译依赖库 本地环境是Ubuntu 22.04,需要安装以下依赖库,部分影响boost相关功能的开启,部分影响编译…...
tiechui_lesson01_入口函数和卸载函数
主要讲解入口函数和卸载函数。 #include <ntifs.h>VOID nothing(HANDLE ppid, HANDLE mypid, BOOLEAN bcreate) {UNREFERENCED_PARAMETER(ppid);UNREFERENCED_PARAMETER(mypid);UNREFERENCED_PARAMETER(bcreate);DbgPrint("processNotify\n"); }VOID DriverU…...
密码学【java】初探究加密方式之非对称加密
文章目录 非对称加密1 常见算法2 生成公钥和私钥3 私钥加密4 私钥加密 公钥解密5 公钥和私钥的保存和读取5.1 **保存公钥和私钥**5.2 读取公钥和私钥 非对称加密 非对称加密算法又称现代加密算法。非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。与对…...
网络安全和黑客技能:15本必读书籍推荐
前言 网络安全和黑客技能紧密相连。想要有效地防范黑客攻击,了解黑客的技能和思维方式非常重要。而要想成为一名合格的白帽黑客,也需要深入理解网络安全的基本原理和最佳实践。本文将介绍15本网络安全和黑客书籍,既包括了防范黑客攻击的指南…...
电话号码的字母组合
题目:17. 电话号码的字母组合 - 力扣(Leetcode) 思路: 给定一个电话号码字符串 digits,须输出它所能表示的所有字母组合。我们可以先定义一个数字字符到字母表的映射表 numToStr,然后再用 Combine 函数递归…...
PAT A1032 Sharing
1032 Sharing 分数 25 作者 CHEN, Yue 单位 浙江大学 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, l…...
Git常见问题汇总
问题:Your branch is ahead of ‘origin/master’ by 1 commit 原因:你的本地分支高于远程仓库一次提交, 同步更新下,执行命令: git push origin master问题:warning: LF will be replaced by CRLF in main.lua The …...
设计模式之代理模式(静态代理动态代理)
目录 1、什么是代理模式 2、代理模式的结构 3、代理模式的实现 3.1 静态代理和动态代理概念 3.2 静态代理 3.3 动态搭理 3.3.1 代码实现 3.3.2 Proxy类讲解 4、动态代理VS静态代理 5、代理模式优缺点 1、什么是代理模式 由于某些原因需要给某对象提供一个代理以控制对…...
Java并发编程基础知识概述
前言 在现代计算机系统和服务器中,多线程并行执行已经成为常态,而且并发编程能够充分利用系统资源,提高程序处理效率和质量。因此,Java并发编程是Java程序员必须掌握的重要技能之一。 线程和进程 在操作系统中,进程是…...
Redis超详细入门手册教程!还不快来看看?
地址: RedisRedis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker. Redis provides data structures …https://redis.io/ 1:NoSQL简介 1.1:数据库应用的演变历程 单…...
代码随想录算法训练营第四十九天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II
文章目录 121. 买卖股票的最佳时机122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 为什么定义dp数组为二维数组? dp数组定义,dp(i)[0] 表示第i天持有股票所得最多现金,dp(i)[1]表示第i天不持有股票的状态(未必当前卖出&#x…...
零基础如何学习挖漏洞?看这篇就够了【网络安全】
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...
Twitter 推荐算法底有多牛? 已斩获11.7K star
点击上方“Github中文社区”,关注 看Github,每天提升第070期分享 ,作者:Huber | Github中文社区 大家好,我是Huber。 在美国当地时间 3 月 31 日,马斯克履行当初的诺言,他宣布了 Twitter 算法的…...
看过这篇文章,读懂数据分析
一、为什么需要数据分析 数据分析的重要性不言而喻,没有数据,就是感性。数据不会被观点打败,数据只能被数据打败。我们现在妥妥地已经进入了数据时代。 量化IT投资成效,以数据驱动决策 站在公司或者决策者角度,数据最…...
[计算机图形学]光场,颜色与感知(前瞻预习/复习回顾)
一、Light Field / Lumigraph—光场 1.我们看到的是什么 我们的眼睛能够把3D世界转换为2D的成像信号被我们感知,如上面第一幅图,这就是我们看到整个世界的过程,那么如果我们把之前记录的光的信息都完美的放在一个幕布上,那么我们…...
L4公司进军辅助驾驶,放话无图也能跑遍中国
作者 | Amy 编辑 | 德新 高阶智能驾驶走向规模量产,高精地图成为关键的门槛之一。今年,多家车企和智驾公司都喊出「不依赖高精地图,快速大规模落地」的口号。 华为、小鹏、元戎以及毫末等,可能是最快在国内量产 无高精图智…...
【Java笔试强训 17】
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥杨辉三角…...
【IPv6】基本概念及字段
IPV4知识点: 字段值 IPv4字段共 字段值解释Version版本版本字段,可以区分V4和V6版本,V4是0100,V6是0110,需要注意的是V4和V6头部除了版本字段位置相同外,其他都是不一样的,因此两个协议不能直…...
数据库中的 Schema 变更实现
线上沙龙-技术流第 30 期营业啦 05月09日(周二)19:30 KaiwuDB - B站直播间 传统数据库操作 Schema 变更时,第一步便是锁表,需持续到 Schema 变更操作完成。这样的做法虽然实现简单,无需考虑事务并发带来的影响&#…...
【C++ 学习 ②】- 类和对象(上)
目录 一、 面向对象的基本理念 1.1 - 什么是对象? 1.2 - 类和对象 1.3 - 面向对象的五条原则 1.4 - 面向过程 vs 面向对象 二、C 中的结构体 三、类的定义 3.1 - 类的两种定义方式 3.2 - 成员变量的命名规范 四、类的访问限定符和封装 4.1 - 访问限定符 …...
最好的物联网教程:软硬结合——从零打造物联网
在大学里不同专业有着不同的追求:机械类与强电类专业学生追求的是 “机电合一” ,既懂机械又懂电气,整个电气机械自动化便能打通。弱电类专业学生追求的是 “软硬结合” ,既懂硬件又懂软件,整个电子产品便能打通。我作…...
猫狗训练集训练报错:Failed to find data adapter that can handle input
这里写自定义目录标题 Jupyter Notebook6.5.4 tensorflow 2.12.0 pillow 9.5.0 numpy 1.23.5 keras 2.12.0 报错详细内容: ValueError: Failed to find data adapter that can handle input: (<class ‘tuple’> containing values of types {“<class ‘k…...
中国网络安全人才需求
如果你是一个想要入门网络安全行业的小白、如果你是网络安全专业在读的大学生、如果你是正在找工作的新手,那么这篇文章你一定要仔细看。毕竟知己知彼百战百胜,知道行业的人才需求才能更好得发挥自己的优势。 当你打开BOSS直聘、拉钩等招聘网站…...
设计模式之组合模式
目录 1、组合模式的定义 2、组合模式例子 3、组合模式实现 3.1 组合模式的结构 3.2 组合模式的分类 3.3 组合模式代码实现(透明组合模式) 4、组合模式的优点 5、组合模式使用场景 1、组合模式的定义 组合模式又名部分整体模式,是用于把…...
计算机基础书籍
一操作系统 二常见问题总结 1.操作系统的特征? 并发、共享、虚拟、异步性 2.进程阻塞与唤醒的条件 等待 I/O 操作完成请求系统资源失败等待信号量或事件等待子进程结束被高优先级进程抢占 3.如何避免死锁? 1、避免资源竞争 2、破坏循环等待条件 3、优…...
保龄球游戏的获胜者、找出叠涂元素----2023/4/30
保龄球游戏的获胜者----2023/4/30 给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。 保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。 假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为: …...
jQuery事件
1. jQuery事件注册 单个事件注册 语法: element.事件(function(){}) eg:$(“div”).click(function(){ 事件处理程序 }) 其他事件和原生基本一致。比如mouseover、mouseout、blur、focus、change、keydown、keyup、resize、scroll 等 <!DOCTYP…...
初识SpringCloud
一、软件架构演进 单体架构 垂直架构 分布式架构 SOA架构 微服务架构 二、微服务架构 2.1 微服务理念 "微服务”一词源 于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到http://martinfowler.com/articles/microservices.html微服务是系统架构上…...
安装java配置
目录 安装JDK 编辑 环境变量配置 3、检验环境变量配置 二、安装tomcat 验证Tomcat配置是否成功 三、安装Mysql 一、安装 二、卸载 四、安装Maven 安装JDK 点击更改将C直接给为F即可。 点击确定后进行安装,安装完以后会提示安装JRE; 检测是否已经安装JDK的…...
KBO的选秀会有哪些规定和流程`棒球7号位
KBO(韩国职业棒球联盟)的选秀会有以下规定和流程: 1. 选秀对象:KBO的选秀会主要面向年满18岁及以上的高中和大学生,以及海外球员和自由球员。KBO的球队可以在选秀会中挑选所需的球员,每个球队有一定数量的选…...
华为商城官网手机版app/西安seo王尘宇
原标题:【事业单位】江苏统考考什么?公基、言语……题量分布!江苏事业单位统考考什么?abcde类?管理类考什么?专技岗考什么?哪些考专业知识?各类模块分值是怎么分布的?如何…...
万能网页视频下载/关键词优化的发展趋势
招我过来的时候说的数通工程师,这是现在让我跟着学习华为的PTN,说实话我都知道是个什么东西,又不让我摸设备,整天在个U2000上点来点去的- -! 问了公司里的同事,PTN说是数通也是数通说是传输也是传输&#x…...
小学网站建设工作小组/网店推广的方式
一、增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdents (姓名,性别,出生日期) values (‘王伟华’,‘男’,‘1983/6/15’) 注意:如果…...
建站宝盒源码/报个电脑培训班要多少钱
1 引言 1.1 编写目的 为更好地规范Jboss软件安装,促进安装标准化而编写该文档。 2 JBOSS安装 2.1 安装JDK 选择安装JDK的版本: 核心系统:jdk-1_5_0_22-linux-amd64.bin其它系统:jdk-6u45-linux-x64财务用WAS自带的JDK(…...
微网站自己怎么做/哪家网站推广好
一、软件验收测试是什么? 验收测试作为软件测试里必不可少的一步,是软件产品在部署之前的最后一个测试操作,是在产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。因为是技术测试的最后一个阶段,…...
网站建设的主机/超级外链
PhysX 3.4更新 PhysX 3.4是一个重大更新,对多个方面带来了明显的改进。 首先,PhysX 3.4解决了大量Bug。例如:PhysX 3.4显著改进凸面与凸面间的碰撞检测和反馈,因此当启用PCM碰撞检测时,不会出现任何奇怪的碰撞情况。针…...