当前位置: 首页 > news >正文

libwebsockets交叉编译全流程

libwebsocket中的webscoket加密功能需要依赖于Openssl库因此需要提前准备好openssl开源库。

交叉编译openssl

下面演示源码方式交叉编译OpenSSL为动态库。

创建个Websocket文件夹,把后续的成果物均放在这个文件中,文件夹中创建子文件夹OpenSSL和libWebsockets用于分别存放后续编译的成果物头文件和动态库静态库方便后续其他文件引用。

然后压缩OpenSSL文件,解压后的目录层级如下

进入到openssl-1.1.1t目录中

查看之前建好的用于存放Openssl成果物的路径,复制下来

进入openssl编译路径

配置编辑参数

no-asm: 在交叉编译过程中不使用汇编代码代码加速编译过程;

shared: 生成动态连接库。

 no-async: 交叉编译工具链没有提供GNU C的ucontext库

--prefix=: 安装路径

--cross-compile-prefix=: 交叉编译工具

输入如下命令

./config no-asm shared no-async --prefix=/data1/shenhao11/WebScoketDemo/Websockets/Openssl --cross-compile-prefix=arm-ca9-linux-gnueabihf-

配置成功后显示如下画面,同时目录下生成Makefile文件

打开生成的Makefile文件,删除其中的-m64和-m32选项

删除后

删除后不能忘记要添加交叉编译的环境变量,否则后续编译可能会出错

export LD_LIBRARY_PATH=`dirname $(dirname $(which arm-ca9-linux-gnueabihf-gcc))`/usr/local/lib

然后再当前目录,执行make 命令开始编译

编译成功后 执行make install 进行安装

安装完成后显示如下

同时在我们的成果物路径下生成如下文件

可以看到lib目录下生成了交叉编译后的我们需要的openssl的动态库

交叉编译libwebsockets-main

然后我们开始交叉编译libwebsockets-main

先解压该文件,解压后进入该文件目录

创建build目录

进入build

执行cmake命令

cmake 参数说明:

            -DCMAKE_SYSTEM_NAME                  指定系统为Linux

            -DCMAKE_C_COMPILER                   指定C语言编译器如交叉编译器未加入到环境变量,需要使用绝对路径

            -DCMAKE_CXX_COMPILER                 指定c++编译器

            -DLWS_OPENSSL_INCLUDE_DIRS               指定Openssl头文件目录

            -DLWS_OPENSSL_LIBRARIES                   指定Openssl动态库路径        

cmake         -DCMAKE_SYSTEM_NAME=Linux  \

                     -DCMAKE_C_COMPILER=arm-ca9-linux-gnueabihf-gcc  \

            -DCMAKE_CXX_COMPILER=arm-ca9-linux-gnueabihf-g++  \

            -DLWS_OPENSSL_INCLUDE_DIRS=/data1/shenhao11/WebScoketDemo/Websockets/Openssl/include \

            -DLWS_OPENSSL_LIBRARIES="/data1/shenhao11/WebScoketDemo/Websockets/Openssl/lib/libssl.so;//data1/shenhao11/WebScoketDemo/Websockets/Openssl/lib/libcrypto.so" ..

注意最后还有.. 意思是根据执行上一级目录下的CMakeList来执行cmake 

cmake完成后如下所示

会在build目录下生成一堆文件和Makefile文件

我们打开cmake_install.cmake文件

修改这个参数路径为之前创建的成果物路径

修改前:

将成果物路径复制下,修改指定路径

将安装路径修改为该路径,修改后:

然后再当前目录执行make开始编译

make后的界面如下

同时会在build目录中的bin目录下生成可执行的测试demo

最后执行make install 进行安装 将成果物拷贝到之前创建好的路径中

可打开成果物路径查看

http://www.lryc.cn/news/541911.html

相关文章:

  • 蓝思科技赋能灵伴科技:AI眼镜产能与供应链双升级
  • 谷歌浏览器更新后导致的刷新数据无法显示
  • Nginx学习笔记:常用命令端口占用报错解决Nginx核心配置文件解读
  • Pinia 3.0 正式发布:全面拥抱 Vue 3 生态,升级指南与实战教程
  • at32f103a+rtt+AT组件+esp01s 模块使用
  • EasyRTC:全平台支持与自研算法驱动的智能音视频通讯解决方案
  • Spring 实战技术文档
  • 设计模式教程:解释器模式(Interpreter Pattern)
  • ARM SOC 架构系统M系、R系、A系
  • Hutool - Script:脚本执行封装,以 JavaScript 为例
  • 【开源项目】分布式文本多语言翻译存储平台
  • 小智机器人CMakeLists编译文件解析
  • SOME/IP--协议英文原文讲解11
  • python~http的请求参数中携带map
  • 深研究:与Dify建立研究自动化应用
  • ESP32S3:参考官方提供的led_strip组件使用 SPI + DMA 方式驱动WS2812 RGB灯的实现思路 (实现各个平台移植使用该方式)
  • Http模块及练习
  • 计算机视觉行业洞察--影像行业系列第一期
  • C语言番外篇(3)------------>break、continue
  • 【NLP 31、预训练模型的发展过程】
  • sqlclchery面对复杂的sql语句怎么办
  • C++/JavaScript ⭐算法OJ⭐下一个排列
  • 《Mycat核心技术》第17章:实现MySQL的读写分离
  • Windows 11 使用容器(Docker Podman)
  • 代码审计入门学习之sql注入
  • 2024信息技术、信息安全、网络安全、数据安全等国家标准合集共125份。
  • element ui的select选择框
  • 文档检索服务平台
  • 使用FastAPI进行可视化部署
  • 设计模式 之 工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)(C++)