libwebsockets交叉编译

news2024/11/24 2:01:50

libwebsockets官网:https://libwebsockets.org/

github:https://github.com/warmcat/libwebsockets

首先下载libwebsockets源码,源码既可以在其官网上下载,也可以到github上下载。这里以v4.1.6为例,https://github.com/warmcat/libwebsockets/releases/tag/v4.1.6

将源码拷贝进linux系统后,解压缩,然后进入源码目录

cd libwebsockets-4.1.6/
vim CMakeLists.txt

这里编译去掉 ssl,因为ibwebsockets和OpenSSL版本对不上会导致一些很难解决的编译问题。

在CMakeLists.txt中增加如下内容:

SET(CMAKE_INSTALL_PREFIX /home/cjc/company/Sunmnet/xiangmu2/trunk/common/libwebsockets-4.1.6/install)
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_FIND_ROOT_PATH "/home/cjc/source/toolchains/gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu/bin/"    )
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_C_COMPILER "/home/cjc/source/toolchains/gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch    64-linux-gnu-gcc")
SET(CMAKE_CXX_COMPILE "/home/cjc/source/toolchains/gcc-linaro-5.4.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarc    h64-linux-gnu-g++")
#SET(LWS_OPENSSL_INCLUDE_DIRS /home/cjc/company/Sunmnet/xiangmu2/trunk/common/openssl-3.1.0/install/include/)
#SET(LWS_OPENSSL_LIBRARIES /home/cjc/company/Sunmnet/xiangmu2/trunk/common/openssl-3.1.0/install/lib64/)
SET(LWS_WITH_SSL OFF)
SET(LWS_WITHOUT_BUILTIN_SHA1 OFF)

其中,CMAKE_INSTALL_PREFIX :指定make install后库的安装路径。

CMAKE_SYSTEM_NAME:指定目标机所在的操作系统名称。
CMAKE_FIND_ROOT_PATH:代表一系列的相关文件夹路径的根路径的变更,所有的Find_***.cmake脚本首先会在这个路径的usr/lib,lib目录下找,然后才会去系统的目录下找。可以指定多个路径。
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM:有三种取值:NEVER,ONLY,BOTH,这边选NEVER表示不在当前机器的系统目录下查找,而是去宿主机查找。
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY:选ONLY表示依赖库只在交叉编译环境中找。
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE:表示依赖的头文件只在交叉编译环境中找。
CMAKE_C_COMPILER和CMAKE_CXX_COMPILE:指定交叉编译链gcc和g++。

SET(LWS_WITH_SSL OFF)和SET(LWS_WITHOUT_BUILTIN_SHA1 OFF):表示编译不依赖SSL。

然后下面的option(LWS_WITH_SSL "Include SSL support (defaults to OpenSSL or similar, mbedTLS if LWS_WITH_MBEDTLS is set)" OFF),这里从ON改成OFF。

然后执行:

cmake ./
make
make install

完成后,在install/lib目录下即生成了库文件。 

参考:《Libwebsockets的交叉编译》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/422236.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

react项目中自定义一个markdown编辑器

Markdown 是一种轻量级标记语言。 Markdown是一种简单的格式化文本的方法,在任何设备上看起来都很棒。它不会做任何花哨的事情,比如改变字体大小、颜色或类型——只是基本的,使用你已经知道的键盘符号。 它还允许人们使用易读易写的纯文本格…

为什么众多大型国企都在升级企业数智化底座?

在数字经济大潮中,数字化转型已不是企业的“选修课”,而是关乎企业生存和长远发展的“必修课”。在企业数字化转型中,国有企业特别是中央企业普遍将数字化转型战略作为“十四五”时期业务规划的重要内容之一,数字化能力也成为衡量…

图文详解CAN Log文件 - ASC文件格式

目录 1 CAN Log文件 -- ASC文件格式 1.1 Header 1.2 版本编号 1.3 经典CAN网络中的描述 1.3.1 经典CAN Standard标准帧的描述 1.3.2 经典CAN Extended扩展帧的描述 1.3.3 CAN Remote远程帧的描述 1.3.4 CAN Error错误帧的描述 1.4 CANFD网络中的描述 1.4.1 经典CAN S…

图解并用 C 语言实现非比较排序(计数排序、桶排序和基数排序)

目录 一、计数排序 二、桶排序 三、基数排序 一、计数排序 算法步骤: 找出待排序数组 arr 中的最小值和最大值(分别用 min 和 max 表示)。 创建一个长度为 max - min 1、元素初始值全为 0 的计数器数组 count。 扫描一遍原始数组&…

Nacos客户端实例注册源码分析-篇一

Nacos客户端实例注册源码分析-篇一 版本 nacos 服务器端 nacos 2.0.3 实例客户端注册入口 注册案例 回到之前搭建的服务提供者项目 9002 ,在真实的生产环境下,如果需要让某一个服务注册到 Nacos 的服务当中,我们引入对应的 nacos 发现依赖&…

4月Google Play政策更新,游戏上架需要注意这几点

3月21日,据路透社报道,由于发现国内某知名电商应用存在恶意软件问题,谷歌已暂时将该APP从商店下架,并表示:将该APP下架是一种安全预防措施,已经下载的用户也会收到警告,提示他们进行卸载。 4月…

基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)

摘要:动物识别系统用于识别和统计常见动物数量,通过深度学习技术检测日常几种动物图像识别,支持图片、视频和摄像头画面等形式。在介绍算法原理的同时,给出Python的实现代码、训练数据集以及PyQt的UI界面。动物识别系统主要用于常…

c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换

c/c:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的…

【自定义表格穿梭框】自定义封装jqgrid表格穿梭框,支持分页复选全选(附完整源码及效果图)

【写在前面】其实之前业务中也有这个方面的需求,但是总觉得自己写的有点乱,此时也就借这个机会重新封装一个公共的函数去实现这个穿梭框的效果,支持分页勾选,页面展示已选中和未选择的数据,使得系统操作更友好。 涉及知…

数学建模(三):模拟退火算法(SA)

文章目录模拟退火算法(SA)一、 概述1、 算法简介2、 核心思想3、 数学原理4、 模拟退火的流程二、 实例分析1、 初始化参数2、 Metrospolis 准则3、 生成新的值4、 获取最优值5、 主程序6、 总代码模拟退火算法(SA) 一、 概述 1…

折叠屏市场起风,华为、OPPO“你追我赶”

配图来自Canva可画 现如今,智能手机已经成为了人们生活中不可或缺的重要工具,无论是出行,还是社交,亦或是支付,只需要一部智能手机就可以通通搞定。因此,在消费者多样化需求的助推下,智能手机行…

【Spring】—Spring中Bean的配置、作用域

一、Bean的配置 Spring用于生产和管理Spring容器中的Bean,需要开发者对Spring的配置文件进行配置。在实际开发中,最常采用XML格式的配置方式,即通过XML文件来注册并管理Bean之间的依赖关系。 在Spring中,XML配置文件的根元素是…

易基因:全基因组CpG密度和DNA甲基化分析方法比较(MeDIP、RRBS和WGBS)| 研究综述

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 CpG密度(CpG density)与各种组织中的DNA甲基化相关。基因组按CpG密度分为:CpG岛(CpG island,CGI)、CpG岛上下游2kb…

FFMPEG VCL Pack Crack显示位置支持或光标

FFMPEG VCL Pack Crack显示位置支持或光标 FFMPEG VCL Pack是一个组合解决方案和平台,用于在Delphi中录制、转换和传播音频和视频,其中包括音频/视频库中的前一个libavcodec。 FFMPEG VCL Pack功能和选项: 新的Live555公司基于Rtsp Media Ser…

基于深度学习的安全帽检测系统(YOLOv5清新界面版,Python代码)

摘要:安全帽检测系统用于自动化监测安全帽佩戴情况,在需要佩戴安全帽的场合自动安全提醒,实现图片、视频和摄像头等多种形式监测。在介绍算法原理的同时,给出Python的实现代码、训练数据集,以及PyQt的UI界面。安全帽检…

设计模式之迭代器模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、迭代器模式是什么? 迭代器模式是一种行为型的软件设计模式,提供一种方法能顺序访问聚合对象中的各个元…

如何做好缓存设计?

大家好,我是易安!今天我们来谈一谈缓存应该如何设计。 什么是缓存 缓存是一种临时储存数据的方式。当用户查询数据时,系统会首先在缓存中查找,如果数据已经存在于缓存中,则直接使用,否则系统会到数据的原始…

研报精选230410

目录 【行业230410西南证券】医药行业2023年4月投资月报:看好创新药和中药行情【行业230410国信证券】汽车行业4月投资策略:3月新能源乘用车批发销量预计同比增长32%,持续关注板块年报季报行情【行业230410西南证券】医药行业周报&#xff1a…

【集成架构】探索3种顶级「集成框架」Apache、Spring和Mule

正确的集成框架是绑定应用程序架构构建块的粘合剂。应用程序组件必须不断交换关键数据,以方便用户操作、服务扩展、威胁监视、后端操作、事件触发等。如果没有可靠的集成过程,应用程序和服务故障将淹没软件环境。正确的集成框架是绑定应用程序架构构建块…

【JAVA】#详细介绍!!! synchronized 加锁 详解(1)!

本文分以下几点来介绍synchronized(根据JDK1.8) 1. 介绍synchronized 2. synchronized 为什么能保证线程安全 3. synchronized 的 用法 4. synchronized 的锁特性 目录 1. 介绍synchronized 2. synchronized的用法 2.1 synchronized修饰指定代码块 2…