websocketpp的使用和boost库的交叉编译

2023-11-06

最近使用嵌入编程时需要使用websocket。在github上查找开源库时,主要有两个库点赞比较高的,其中一个是websocketpp这个库。此库需要使用boost库进行编译。所以本文章主要介绍boost库的交叉编译和在程序中使用websocketpp。

boost库交叉编译

从boost官网上下载最新的boost库boost官网下载图示
等待下载完成之后,放入到虚拟机中(ubuntu),使用命令:tar jxvf boost_1_73_0.tar.bz2 将其解压。

cd boost_1_73_0
./bootstrap.sh --show-libraries  //查看当前boost库中已经包含的库
/bootstrap.sh --prefix=/home/mjf/lib //使用此命令可以指定boost库的安装如果不使用默认路径是 /usr/local/include 和 /usr/local/lib,分别存放头文件和各种库

完成以上指令后,需要修改文件“project-config.jam”,在其中找到以下内容
在这里插入图片描述

注意以上图片是已经修改过的交叉编译器。注意红框标注的是空格。
保存之后,执行以下命令:

./b2
./b2 install

在你之前指定的路径下会有boost库的头文件生成。

websockpp使用

下载路径:websocketpp
下载之后将文件夹“websocketpp”放入到include的文件夹下。
在文件夹“examples\broadcast_server”中找到广播的例子。
然后使用命令

/home/keda/xugong/staging_dir/toolchain-arm_cortex-a9+neon_gcc-7.3.0_musl_eabi/bin/arm-openwrt-linux-g++ broadcast_server.cpp -I ./include/ -I /home/keda/boost_lib/boost_zigbee_lib/include/ -L /home/keda/boost_lib/boost_zigbee_lib/lib -o test_websocket

此时虽然能编译通过。但是会有以下报错警告:
在这里插入图片描述

note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<P2d*, std::vector<P2d> >' changed in GCC 7.1
_M_realloc_insert(end(), __x);
 
 和  
/opt/armv7-gcc-2017/arm-linux-gnueabihf/include/c++/7.2.0/bits/vector.tcc:105:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<cpzparser::Anchor*, std::vector<cpzparser::Anchor> >' changed in GCC 7.1
    _M_realloc_insert(end(), std::forward<_Args>(__args)...);
 
 要么  
/opt/armv7-gcc-2017/arm-linux-gnueabihf/include/c++/7.2.0/bits/vector.tcc:394:7: note: parameter passing for argument of type 'std::vector<cpzparser::PointEntity>::iterator {aka __gnu_cxx::__normal_iterator<cpzparser::PointEntity*, std::vector<cpzparser::PointEntity> >}' changed in GCC 7.1
       vector<_Tp, _Alloc>::

该警告告诉您,在6和7.1之间存在一个微妙的ABI更改(实际上是一致性修复),因此当使用7.x构建的代码调用时,使用6.x或更早版本构建的库可能无法正常工作(并且反之亦然)。 只要您的所有C ++代码都是使用GCC 7.1或更高版本构建的,就可以安全地忽略此警告。 要禁用它, -Wno-psabi 传递给编译器。
在编译成功只有,直接运行即可启动一个广播的websocket服务器。更多例子可以参数例子文件夹下的内容。

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

websocketpp的使用和boost库的交叉编译 的相关文章

随机推荐

  • IDEA创建SpringBoot无法连接https://start.spring.io

    解决办法 将网址改成 http start spring io
  • 小白学股票基金_4_ETF

    ETF Exchange Traded Funds 中文名称为交易型开放式指数基金 是一种在交易所上市交易的开放式指数基金 兼具股票 开放式指数基金及封闭式指数基金的优势 属于高效的指数化投资工具 也就是说 如果我们买一手科技ETF 就可以
  • Intellij IDEA使用技巧,去掉拼写检查和unused提示

    在setting里面搜索spell将其中的拼写检查的 号去掉 搜索never used 关键字将其中的unused的检查去掉
  • 模块化软件设计

    模块化的基本原理 模块化 Modularity 是在软件系统设计时保持系统内各部分相对独立 以便每一个部分可以被独立地进行设计和开发 这个做法背后的基本原理是关注点的分离 SoC Separation of Concerns 关注点的分离在
  • 第5天-[21天学Python]-Python中自定义函数及调用的方法

    本章内容主要包括 声明函数 调用自定义函数 变量作用域 各种类型的函数参数应用 使用lambda建立匿名函数 Python其他常用内建函数 1 使用函数 1 1 声明函数 在python中 函数必须先声明 然后才能调用它 使用函数时 只要按
  • Multisim14.0仿真(八)LM555制作流水灯

    一 仿真原理图 二 仿真运行效果
  • mysql-数据页结构

    数据页结构 数据删除后记录并没有马上被删除 而是被打上了删除标记 并被记录到一个垃圾链表中 之后若有新纪录来 它们则可能覆盖被删除的记录占用的存储空间 页内数据组成单向链表 且再次进行了分组 每组最后一条数据顺序存储在靠近页尾部的地方 这种
  • react-jsx语法上使用switch匹配不同渲染组件

    这里主要讲的是jsx语法使用switch 的js语句 一般jsx语法执行的是简单的运算和三元表达式 如果想要执行条件判断如if语句和switch语句以及函数等 直接使用是会报错的 这里应该使用函数立即执行的语法写法 如果需要根据不同判断渲染
  • 关于javascript中的函数作用域

    var scope global function f alert log scope 输出 undefined 而不是 global var scope local 变量在这里赋初值 单变量本身在函数体内任何地方军事有定义的 consol
  • vue配置页面预渲染(将页面静态化,便于seo读取)

    在项目中安装prerender spa plugin npm install save prerender spa plugin 找到bulid目录下的webpack prod conf js文件 在其中写入以下内容 在文件的上方写入 co
  • tensorflow学习笔记(四)

    代码学习有点吃力 学习了YOLOv1的代码 主要是训练部分的代码 对yolo的又有了进一步的理解 其文件夹下主要包含py文件为 train py yolo net py pascal voc 下面是比较详细的代码解读 但是还是有一些内容理解
  • 《曾国藩家书》读书手记(修身篇二)

    致诸弟 劝弟谨记进德修业 吾人只有进德 修业两事靠得住 进德 则孝弟仁义是也 修业 则诗文作字是也 这个是说进德修业是很重要的东西 这两个东西是越积累越多的 只增不减的 致诸弟 劝弟切勿恃才傲物 故吾人用功 力除傲气 力戒自满 毋为人所冷笑
  • 基于PaddleOCR开发Auto.js Pro文字识别插件

    目录 目的 准备工作 插件开发 1 项目结构对比 2 插件SDK集成 3 调整assets资源 4 删除无用的Activity文件 5 修改AndroidManifest xml 6 修改Predictor文件 7 修改包名 8 新建OCR
  • 从零开始的Python机器学习指南(二)——监督学习之OLS回归

    介绍 本博客将结合样例介绍监督学习 Supervised Learning SL下的第一大分支 回归 Regression 开始前的准备 开始前 请先确保你的python环境中有以下包 pandas numpy sklearn 本文的所有代
  • 矩阵论(五)——矩阵分析

    矩阵论 五 矩阵分析 1 向量范数 2 矩阵范数 3 向量序列与矩阵序列的极限 3 1 向量序列的极限 3 2 矩阵序列的极限 4 矩阵幂级数 1 向量范数 向量范数 x V forall x in V x V
  • 万字长文,梳理清楚Python多线程与多进程!

    作者丨钱魏Way 来源 https www biaodianfu com python multi thread and multi process html 在学习Python的过程中 有接触到多线程编程相关的知识点 先前一直都没有彻底的
  • 细说MVC、桌面客户端应用软件和WPF

    MVC开发框架相比较于类似ASP这种翻译脚本语言来讲 已经让广大的Web开发者有了足够的兴奋点 它使得Web开发更加简单和规范 那么接下来的桌面应用软件呢 Kevin Hoffman在Cocoa下的MVC框架和WPF的嵌入式开发有很好的经验
  • 多线程(六)-sleep和wait方法的区别

    目录 一 sleep和wait方法的区别 二 wait方法 wait方法的使用 wait 结束等待的条件 三 notify和notifyAll方法 notify 方法只是唤醒某一个等待的线程 notifyAll方法可以一次唤醒所有的等待线程
  • 美团团购订单系统优化记

    美团团购订单系统优化记 团购订单系统简介 美团团购订单系统主要作用是支撑美团的团购业务 为上亿美团用户购买 消费提供服务保障 2015年初时 日订单量约400万 500万 同年七夕订单量达到800万 目标 作为线上S级服务 稳定性的提升是我
  • websocketpp的使用和boost库的交叉编译

    最近使用嵌入编程时需要使用websocket 在github上查找开源库时 主要有两个库点赞比较高的 其中一个是websocketpp这个库 此库需要使用boost库进行编译 所以本文章主要介绍boost库的交叉编译和在程序中使用webso