如何将libwebsockets库编译为x86架构

在之前的文章中,我们已经详细介绍了如何交叉编译libwebsockets并将其部署到ELF 1开发板上。然而在调试阶段,发现将libwebsockets在Ubuntu环境下编译为x86架构可能更为方便和高效。

通过在主机环境中编译运用x86架构下的libwebsockets库,可以充分利用主机卓越的计算性能与丰富的调试资源,显著提升开发及调试工作的效率与便捷性。

接下来,将和各位小伙伴详尽阐述在Ubuntu系统中编译libwebsockets库的具体步骤,以及如何对其进行有效测试。

编译libwebsockets

1、从Github下载libwebsockets源码

https://github.com/warmcat/libwebsockets

2、将下载的libwebsockets-main.zip拷贝到开发环境/home/elf/work目录下解压

elf@ubuntu:~/work$ unzip libwebsockets-main.zip

3、进入解压后的目录,新建build和insatll目录

elf@ubuntu:~/work$ cd libwebsockets-main/
elf@ubuntu:~/work/libwebsockets-main$ mkdir build
elf@ubuntu:~/work/libwebsockets-main$ mkdir install

4、进入build目录,配置编译环境并编译源码

elf@ubuntu:~/work/libwebsockets-main$ cd build/
elf@ubuntu:~/work/libwebsockets-main/build$ cmake -DCMAKE_INSTALL_PREFIX=../install ..
elf@ubuntu:~/work/libwebsockets-main/build$ make

5、编译完成后,安装文件

elf@ubuntu:~/work/libwebsockets-main/build$ make install

基础测试

验证libwebsockets库的基本功能,确保服务器能够正确启动并能通过浏览器访问。

1、测试工具

使用libwebsockets提供的测试程序进行测试,查看安装目录中的可执行文件:

elf@ubuntu:~/work/libwebsockets-main/build$ cd ../install/bin/
elf@ubuntu:~/work/libwebsockets-main/install/bin$ ls
libwebsockets-test-client  libwebsockets-test-lejp  
libwebsockets-test-server  libwebsockets-test-server-extpoll

2、运行服务器端测试程序

elf@ubuntu:~/work/libwebsockets-main/install/bin$ libwebsockets-test-server

图片

可以看到服务器已经在7681端口监听。

3、在浏览器中访问服务器

打开浏览器,输入http://192.168.2.101:7681,替换192.168.2.101为自己的服务器IP地址。出现如下页面,测试成功。

图片

扩展测试

前面已经介绍了如何将libwebsockets库编译成ARM架构并移植到ELF 1开发板上。为了验证 libwebsockets 库在不同架构上的兼容性和实际应用中的稳定性,以ARM开发板为客户端来连接虚拟机上的服务端。

前提:将虚拟机设置为桥接模式,使虚拟机和开发板处于同一局域网内,确保网络连接正常。

1、虚拟机运行服务端测试程序

elf@ubuntu:~/work/libwebsockets-main/install/bin$ libwebsockets-test-server

图片

可以看到服务器已经在7681端口监听。

2、开发板运行客户端测试程序

客户端命令格式:

libwebsockets-test-client <server address> [--port=<p>] [--ssl] [-k] [-v <ver>] [-d <log bitfield>] [-l]

执行如下命令,替换192.168.2.101为自己的服务器IP地址。

root@ELF1:~# libwebsockets-test-client 192.168.2.101 --port=7681

图片

可以看到连接开始于2024年6月24日15:55:01,目标IP地址为192.168.2.101。连接成功后,客户端打印了mirror: LWS_CALLBACK_CLIENT_ESTABLISHED的消息,表示已成功建立与服务器的WebSocket连接。

至此就完成了将libwebsockets库编译为x86架构的步骤,希望本篇指南能成为各位小伙伴在嵌入式技术探索之旅上的得力助手。如果您在实践过程中遇到任何问题,欢迎留言交流。

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

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

相关文章

阿里ChatSDK使用,开箱即用聊天框

介绍&#xff1a; 效果&#xff1a;智能助理 ChatSDK&#xff0c;是在ChatUI的基础上&#xff0c;结合阿里云智能客服的最佳实践&#xff0c;沉淀和总结出来的一个开箱即用的&#xff0c;可快速搭建智能对话机器人的框架。它简单易上手&#xff0c;通过简单的配置就能搭建出对…

Flowable工作流引擎核心事件详细解释说明

Flowable工作流引擎核心事件详细解释说明 流程执行事件 需要了解全部详细事件的请看这个链接Flowable&#xff08;一个开源的工作流和业务流程管理引擎&#xff09;中与事件相关的一些核心概念 流程开始和结束事件 PROCESS_STARTED&#xff1a;标记流程实例的开始。PROCESS…

公益快报 | 中科亿海微以企业奖学金为纽带,深化校企合作

近日&#xff0c;为回报母校、激励湖南大学机器人视觉感知与控制技术国家工程研究中心广大学生&#xff0c;中科亿海微电子科技&#xff08;苏州&#xff09;有限公司&#xff08;简称“中科亿海微”&#xff09;捐赠设立企业奖学金。此项奖学金的设立标志着校企合作迈向全方位…

【C++】C++中struct结构体和class类的区别

在C中&#xff0c; struct 和 class 在很多方面都非常相似&#xff0c;它们都可以包含数据成员&#xff08;变量&#xff09;和成员函数&#xff08;方法&#xff09;。然而&#xff0c;它们之间还是存在一些关键的区别&#xff1a; 1. 默认访问权限 struct 的成员默认是 pub…

实现组件存储 WinSxS 文件夹解析

目录 背景 目录名的组成 解析目录结构 更新&总结 文章出处链接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/140385969]. 背景 WinSxS 文件夹位于 Windows 文件夹中&#xff0c;例如 C: \Windows\WinSxS。它是 Windows 组件存储文件的位置。 Wind…

深入理解Spring Boot中的日志框架选择

深入理解Spring Boot中的日志框架选择 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 背景与需求 在开发和运维中&#xff0c;日志是不可或缺的重要组成部分。Spring Boot作为一个流行的Java开…

idea启动vue项目一直卡死在51%,问题分析及其如何解决

如果你的项目也一直卡在百分之几十&#xff0c;你可以参考下面的方法&#xff0c;试一试能否解决 问题描述&#xff1a; 通过在idea终端中输入命令 npm run serve 启动vue项目&#xff0c;启动进程一直卡在51% 如何解决&#xff1a; 检查 < template > 标签中的html内容…

深度学习中的超参管理方法:argparse模块

在深度学习方法中我们不可避免地会遇到大量超参数如&#xff08;batch_size、learning_rate等&#xff09;。不同的超参数组合可以得到不同的训练/测试结果。所以在训练和测试过程中我们需要不断调整超参数获得理想的结果&#xff08;炼丹&#xff09;&#xff0c;如果每一次去…

破解世纪难题:颠覆性方案解锁世界十大未解之谜

前言 在科学的浩瀚宇宙中&#xff0c;始终存在一些引人入胜的谜题&#xff0c;它们挑战着人类智慧的极限。这些谜题不仅涵盖了数学、物理、天文学和生物学等领域&#xff0c;还触及到意识和宇宙的本质。破解这些世纪难题&#xff0c;不仅意味着人类知识的巨大飞跃&#xff0c;…

【Windows】硬链接和软链接(OneDrive同步指定目录?)

文章目录 一、场景带入二、Windows下的硬链接和软链接2.1 硬链接&#xff08;Hard Link&#xff09;2.2 软链接&#xff08;符号链接&#xff0c;Symbolic Link&#xff09;2.3 软链接和快捷方式2.4 应用场景 三、OneDrive中的应用3.1 错误姿势3.2 好像可行的尝试3.3 合理的解决…

智能猫砂盆两种类型怎么选?深度剖析热门前三的品牌!

应该也有很多铲屎官像我一样&#xff0c;第一个入手的通常都是封闭式的智能猫砂盆&#xff0c;自动清洁是很好用&#xff0c;但问题也随之而来。有时候滚筒式的智能猫砂盆会在清洁过程中将砂团摔碎&#xff0c;导致粪便暴露出来产生臭味&#xff0c;这样我们回来不得不又再次进…

LangChain —— Prompt Templates

文章目录 一、什么是 Prompt Templates1、String PromptTemplates2、ChatPromptTemplates3、MessagesPlaceholder 留言占位符 二、如何使用 Prompt Templates 一、什么是 Prompt Templates 提示模板有助于将用户输入和参数转换为语言模型的指令。这可用于指导模型的响应&#x…

LangChain框架详解

LangChain框架详解 LangChain是一个基于语言模型开发应用程序的强大框架&#xff0c;旨在帮助开发人员简化与大模型交互、数据检索以及将不同功能模块串联起来以完成复杂任务的过程。它提供了一套丰富的工具、组件和接口&#xff0c;使开发人员能够轻松构建上下文感知和具备逻…

基于stm32+小程序开发智能家居门禁系统-硬件-软件实现

视频演示&#xff1a; 基于stm32智能家居门禁系统小程序开发项目 视频还有添加删除卡号&#xff0c;添加删除指纹&#xff0c;关闭继电器电源等没有演示。 代码Git&#xff1a; https://github.com/Abear6666/stm32lock 总体功能&#xff1a; 本门禁系统主要解锁功能分别为卡…

冲积图(alluvial plot)展示竞争性内源RNA(ceRNA)网络

导读&#xff1a; 用冲积图展示ceRNA网络可以更好地查看竞争和吸附关系&#xff0c;让静态的图&#xff0c;“流动”起来。 冲积图简介 Alluvial plot&#xff08;冲积图&#xff09;是一种流程图&#xff0c;最初设计用于展示网络结构随时间的变化。这种图表特别适用于展示…

sed的替换可用:斜杠/,竖或|,井号# 等符号, 但是查找只能用斜杠/ , sed的查找和替换可以一起用 笔记240711

sed的替换可用:斜杠/,竖或|,井号# 等符号, 但是… … 查找只能用斜杠/ 替换必须用s开头, 如:s/ , s| , s# 例如: s/正则/替换内容/s/正则/替换内容/gs|正则|替换内容|s|正则|替换内容|gs#正则#替换内容#s#正则#替换内容#g 当内容包含斜杠/时, (例如路径) , 使用 竖或|,井号…

06_TypeScript 中的函数

TypeScript 中的函数 一、函数的定义es5 定义函数的方法TypeScript 定义函数的方法ts 中定义方法传参 二、可选参数三、默认参数&#xff08;跟可选参数一样&#xff09;四、剩余参数&#xff08;三点运算符的应用&#xff09;五、函数重载六、箭头函数 es6 一、函数的定义 es…

Windows图形界面(GUI)-SDK-C/C++ - 编辑框(edit)

公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 编辑框(edit) 控件样式 创建控件 初始控件 消息处理 示例代码 编辑框(edit) 控件样式 编辑框&#xff08;Edit Control&#xff09;是Windows中最常用的控件之一&#xff0c;用于接收用户…

python 知识点累积

.items() tinydict {Google: www.google.com, Runoob: www.runoob.com, taobao: www.taobao.com}print (tinydict.items())运行结果 dict_items([(Google, www.google.com), (Runoob, www.runoob.com), (taobao, www.taobao.com)]) 返回的 dict_items([...]) 是一个字典项的…

【持续集成_05课_Linux部署SonarQube及结合开发项目部署】

一、Linux下安装SonarQube 1、安装sonarQube 前置条件&#xff1a;sonarQube不能使用root账号进行启动&#xff0c;所以需要创建普通用户及 其用户组 1&#xff09;创建组 2&#xff09;添加用户、组名、密码 3&#xff09;CMD上传qube文件-不能传到home路径下哦 4&#xff09…