LVGL 环境搭建-基于WSL

背景说明

小白刚开始接触LVGL,前些日子狠心花198元入手了一块堪称LVGL 入门利器~HMI-Board 开发板,虽然有RT-Thread 集成好的LVGL 环境,只需要几个步骤就能成功把lvgl 的示例运行起来,对于爱折腾的我来说,过于简单也并非好事,对其中的实现流程也是一无所知。于是便想着尝试把lvgl 官方的代码在vscode 运行起来。

步骤1:git 克隆 lv_port_vscode 仓库

lvgl 官方有说明模拟器可以在 linux/mac 平台上使用VS Code,目前暂不支持Windows 系统下使用 VS Code 模拟器。

官方提供GitHub - lvgl/lv_port_pc_vscode的 git 仓库`GitHub - lvgl/lv_port_pc_vscode`在git 仓库里面有README 文档,下面按照官方文档在 WSL2 中进行操作。

  • 1.运行vscode 进入wsl 环境,创建`lvgl_workspace`目录,后面的操作都在这个文件夹下执行。
  • 2.使用git clone 命令克隆git 仓库

git clone --recursive https://github.com/lvgl/lv_port_pc_vscode

但是在这里克隆时间特别长,而且很大概率会不成功,这里尝试在使用git 代理把仓库克隆下来,然后拷贝到 lv_port_pc_vscode 目录下。

这里使用git 代理的方式把lvgl 仓库克隆下来到本地,下一步需要把lvgl 的仓库切换到指定的版本,避免因版本不同编译出错。

在vs code 终端中查看git 克隆到本地的git 状态。

  • 根据git 仓库的 README 操作安装SDL / X11,这里主要安装 SDL 。

sudo apt-get update && sudo apt-get install -y build-essential libsdl2-dev wget https://kumisystems.dl.sourceforge.net/project/freetype/freetype2/2.13.2/freetype-2.13.2.tar.xz tar -xf freetype-2.13.2.tar.xz cd freetype-2.13.2 make make install git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg cd ffmpeg git checkout release/6.0 ./configure --disable-all --disable-autodetect --disable-podpages --disable-asm --enable-avcodec --enable-avformat --enable-decoders --enable-encoders --enable-demuxers --enable-parsers --enable-protocol='file' --enable-swscale --enable-zlib make sudo make install

安装完成后,在VS CODE 中使用 F5 快捷键进行编译工程,会提示下面的错误。

这个错误是因为git clone 仓库的时候子模块 lv_drivers 目录下的文件没有同步好,这时候我们命令行切换到 lv_drivers 目录,进行下面的操作。

终端中执行下面的命令

cd lv_port_pc_vscode/ git checkout 5a5b4a1

输入git status 命令查看,分支切换是否成功。

此时,再切回到`lv_port_pc_vscode`目录下,按下键盘的F5 快捷键编译工程,一般到此应该可以正常运行lvgl 才对,然而实际运行报了下面一个错误,瞬间不知道咋回事。

这里折腾了不少时间,由于这个错误完全没看懂,实在没有办法,只能尝试wsl2 环境下gui 显示(这里是sdl )看看功能是否正常。

找到`Run Linux GUI apps with WSL | Microsoft Learn`这个链接,抱着尝试的心态看看能不能运行起来。

在操作之前需要再次确认一下 WSL 环境下linux 环境是使用WSL2 的版本,可以使用

查看WSL 环境下linux 环境是哪个版本 wsl --list -v

确认是WSL 2 版本,然后进行安装相关GUI 软件,在安装gui 软件之前先更新一下wsl ,这里不确定是否有效,不过还是按照官方的推荐操作执行一遍。

按照上面的命令执行(需要退出wsl 环境,这里把vscode 关闭后再在powershell 中执行)。

接下来,正式开始安装gui app.

sudo apt update sudo apt install gedit -y sudo apt install gimp -y 此时gui 界面都能正常显示,但是再次在工程中按下F5 依旧是报错。 后面尝试重新安装gdb,居然可以正常运行了。 apt-get install gdb

所以前面报错的原因竟是没有安装gdb.

运行效果显示:

到此基于wsl 搭建的LVGL 环境搭建完成,下一步开始学习 LVGL 的使用和界面设计。

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

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

相关文章

Sora专辑|AI视频制作新时代的曙光:OpenAI Sora 模型启示录

本文深入剖析 OpenAI 最新发布的人工智能视频生成模型 Sora 的工作原理,并探讨它对电影制作行业的深远影响。Sora 利用海量数据和强大的计算能力,学习视频的"语法规则"即物理定律,从而生成逼真的视频画面。Sora 将从根本上改变电影制作的方式,降低制作成本、赋能…

融合快慢路径:SlowFast Networks引领视频行为识别新纪元

SlowFast Networks for Video Recognition 的技术原理 随着深度学习和计算机视觉技术的快速发展,视频行为识别成为了一个备受关注的研究领域。SlowFast Networks,由Facebook AI研究院(FAIR)提出的一个通用行为识别框架&#xff0…

OWASP发布AI大模型应用网络安全治理检查清单

文章目录 前言一、部署大模型之前的准备LLM部署策略的选择方案AI大模型的常见部署类型二、大模型应用时的安全检查清单1、对抗性风险2、威胁建模3、AI资产盘点4、AI安全和隐私培训5、建立并参考商业案例6、公司治理7、法律合规8、实现大模型解决方案9、测试、评估、验证和确认(…

vue2、vue3各自的响应式原理

查看本专栏目录 关于作者 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas&#x…

小龙虾优化算法COA求解不闭合MD-MTSP,可以修改旅行商个数及起点(提供MATLAB代码)

一、小龙虾优化算法COA 小龙虾优化算法(Crayfsh optimization algorithm,COA)由Jia Heming 等人于2023年提出,该算法模拟小龙虾的避暑、竞争和觅食行为,具有搜索速度快,搜索能力强,能够有效平衡全局搜索和局部搜索的能力。 参考文献: [1] Jia, H., Rao, H., Wen, C.…

助力智能化农田作物除草,基于DETR(DEtection TRansformer)模型开发构建农田作物场景下玉米苗、杂草检测识别分析系统

在我们前面的系列博文中,关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了,结合智能化的设备可以实现只能除草等操作,玉米作物场景下的杂草检测我们则少有涉及,这里本文的主要目的就是想要基于DETR模型来开发构建玉米…

【春运抢票攻略浅析】

参考 最全12306放票规则,抢票策略,候补作用2023年12306抢票攻略(纯技巧) 研究放票规则,候补的时候车次进行一下挑选,能够买长乘短的尽量买长,不要候补一些区间票吧,这是一开始放票…

LeetCode刷题---确认率

解题思路: 将Signups和Confirmations进行左连接,连接的条件为Signups.user_idConfirmations.user_id 根据题中要求进行查询,这里使用AVG聚合函数来求解确认率 AVG(c.action‘confirmed’)表示对action列进行求平均,如果action‘confirmed’&a…

【题解】—— LeetCode一周小结8

【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结7 19.N 叉树的后序遍历 题目链接:590. N 叉树的后序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 后序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#x…

深度学习目标检测】二十、基于深度学习的雾天行人车辆检测系统-含数据集、GUI和源码(python,yolov8)

雾天车辆行人检测在多种场景中扮演着至关重要的角色。以下是其作用的几个主要方面: 安全性提升:雾天能见度低,视线受阻,这使得驾驶者和行人在道路上的感知能力大大降低。通过车辆行人检测技术,可以在雾天条件下及时发现…

【Linux】head命令使用

head命令 head是一个在 Unix 和 Unix-like 操作系统中常用的命令行工具,用于输出文件的前 n 行。默认为 10,即显示 10 行的内容。 语法 head [options] [file(s)] head命令 -Linux手册页 选项及作用 执行令 : head --help 执行命令结果…

k8s二进制部署的搭建

1.1 常见k8s安装部署方式 ●Minikube Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。 部署地址:Install Tools | Kubernetes ●Kubeadm Kubeadm也是一个工具,提供kubeadm init…

文心一言 VS 讯飞星火 VS chatgpt (203)-- 算法导论15.3 2题

二、对一个16个元素的数组,画出2.3.1节中MERGE-SORT过程运行的递归调用树。解释备忘技术为什么对MERGE-SORT这种分治算法无效。需要写代码的时候,请用go语言。 文心一言,代码不完整: 首先,让我们明确2.3.1节中的MERG…

docker创建mongodb数据库容器

介绍 本文将通过docker创建一个mongodb数据库容器 1. 拉取mongo镜像 docker pull mongo:3.63.6版本是一个稳定的版本,可以选择安装此版本。 2. 创建并启动主数据库 容器数据卷配置 /docker/mongodb/master/data # 数据库数据目录(宿主机&am…

算法刷题day18

目录 引言一、最长上升子序列II二、最短编辑距离三、编辑距离 引言 本章内容实际上是对线性DP的一个扩展内容,线性DP主要是DP的一个分类,就是它的状态转移方程是线性的,就是一维一维的,其实我也没理解,人家就是这样说…

c语言之二维数组定义与初始化

二维数组可以理解和一个表格类似的东西,只不过没有行名称和列名称 二维数组的表达方式是 类型说明符 数组名[常量表达式] [常量表达式] 比如 int a [3] [4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}} a [3] [4] 是一个二维数组表达式,a是数组名,…

数据结构之:堆

堆(Heap)是计算机科学中的一种特别的完全二叉树结构,它满足某种特定顺序,用于实现优先队列等数据结构。堆主要有两种类型:最大堆(Max Heap)和最小堆(Min Heap)。 定义 …

云原生周刊:Docker 推出 Docker Build Cloud

开源项目推荐 Kube-Vip Kube-Vip 旨在为 Kubernetes 集群提供高可用性和负载均衡功能。它提供了一个可插拔的 VIP(虚拟 IP)管理器,可以为集群中的服务分配一个虚拟 IP 地址,并自动将流量路由到正确的节点。该项目提供了多种配置…

Numpy快速入门(1)

文章目录 一、Numpy是什么?二、基础知识1.数组创建2.数组的索引、切片和迭代3.形状操纵 一、Numpy是什么? NumPy是一个开源的Python库,提供了多维数组对象(ndarray)和用于处理这些数组的函数。它是科学计算和数据分析的…