news 2026/5/16 10:51:11

在Ubuntu上快速搭建LVGL模拟器开发环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Ubuntu上快速搭建LVGL模拟器开发环境

1. 为什么选择Ubuntu搭建LVGL模拟器

LVGL作为当下最流行的嵌入式图形库之一,以其高度可裁剪性和低资源占用的特性赢得了广大开发者的青睐。在实际开发中,我们经常需要先在PC端完成界面原型设计,再移植到嵌入式设备。Ubuntu作为Linux发行版中的佼佼者,提供了稳定高效的开发环境,特别适合LVGL模拟器的运行。

我最初接触LVGL时也尝试过Windows平台,但后来发现Ubuntu下的开发体验更加流畅。系统资源占用更低,命令行工具链更完善,而且VSCode在Linux下的运行效率明显优于Windows。更重要的是,很多嵌入式开发板本身就是基于Linux系统,在Ubuntu上开发能够保持环境一致性,减少后期移植的工作量。

2. 环境准备与工具安装

2.1 安装VSCode的三种实用方法

作为LVGL开发的主力IDE,VSCode在Ubuntu上的安装其实非常简单。这里我分享三种实测有效的方法:

第一种是通过官方.deb包安装,这也是最稳妥的方式。打开终端执行:

wget https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64 -O vscode.deb sudo dpkg -i vscode.deb

第二种方法适合Ubuntu 20.04及以上版本,直接通过snap安装:

sudo snap install --classic code

第三种方法是通过官方PPA源安装,能自动获取更新:

sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt update sudo apt install ubuntu-make umake ide visual-studio-code

2.2 必须的构建工具链

在开始LVGL项目前,我们需要确保系统具备完整的编译环境。执行以下命令安装基础工具链:

sudo apt update sudo apt install -y build-essential git make gcc g++

特别提醒:如果之前安装过旧版本的gcc,建议先升级到最新版。我在实际项目中遇到过因gcc版本过低导致的编译错误,更新后问题迎刃而解。

3. 获取LVGL源码的实战技巧

3.1 从GitHub获取源码的优化方案

官方推荐的方式是从GitHub克隆仓库:

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

但由于网络问题,这个过程可能会失败。我总结出几个实用技巧:

  1. 使用GitHub镜像源:将github.com替换为hub.fastgit.org
  2. 开启git的深度克隆:添加--depth=1参数
  3. 分步克隆:先克隆主仓库,再单独初始化子模块

3.2 使用Gitee国内源的完整流程

对于国内开发者,我更推荐使用Gitee镜像源。这是我验证过的稳定方案:

git clone https://gitee.com/mirrors/lv_port_pc_vscode.git cd lv_port_pc_vscode git submodule init git submodule update

克隆完成后,务必将子模块切换到稳定分支:

cd lvgl && git checkout release/v8.3 cd ../lv_drivers && git checkout release/v8.3

4. SDL2驱动的安装与配置

4.1 完整安装SDL2及其依赖

LVGL模拟器需要SDL2作为显示驱动,安装命令如下:

sudo apt install -y libsdl2-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev

安装完成后,验证SDL2版本:

sdl2-config --version

如果输出类似"2.0.14"的版本号,说明安装成功。我在多个Ubuntu版本上测试过,从18.04到22.04都能完美兼容。

4.2 常见问题解决方案

很多新手会遇到SDL2相关的编译错误,这里分享几个典型问题的解决方法:

  1. 找不到SDL2/SDL.h头文件:
sudo apt install libsdl2-dev
  1. 链接时提示undefined reference: 在Makefile中确保链接了SDL2库,添加-lSDL2参数

  2. 运行时提示无法打开显示: 检查是否安装了xorg相关依赖:

sudo apt install xorg openbox

5. 编译与运行LVGL模拟器

5.1 项目配置的详细步骤

用VSCode打开项目后,首先需要修改Makefile配置:

  1. 将DRIVERS变量修改为SDL2
  2. 检查INCS路径是否正确指向SDL2头文件
  3. 确保LIBS变量包含-lSDL2

一个典型的配置示例:

DRIVERS ?= SDL INCS ?= -I$(LVGL_DIR)/ $(shell sdl2-config --cflags) LIBS ?= $(shell sdl2-config --libs)

5.2 编译过程的完整记录

在VSCode终端中执行编译命令:

make clean make -j$(nproc)

编译成功后,运行模拟器:

./build/bin/demo

如果遇到权限问题,记得给可执行文件添加权限:

chmod +x build/bin/demo

6. 模拟器的高级配置技巧

6.1 自定义分辨率的正确方式

修改分辨率需要编辑lv_conf.h文件:

#define SDL_HOR_RES 800 #define SDL_VER_RES 480

但要注意,修改后必须执行make clean再重新编译,否则更改不会生效。这是我踩过的一个坑,当时以为是配置没保存,其实是缓存问题。

6.2 多显示器支持的配置

如果你的Ubuntu连接了多个显示器,可以通过环境变量指定SDL使用的显示器:

export SDL_VIDEO_FULLSCREEN_HEAD=1 ./build/bin/demo

数字1表示第二个显示器,0是主显示器。这个技巧在做演示时特别有用。

7. 开发实战与调试技巧

7.1 在VSCode中高效开发LVGL

推荐安装以下扩展提升开发效率:

  1. C/C++:提供代码补全和调试支持
  2. CMake Tools:如果项目使用CMake
  3. Code Runner:快速运行单个文件

配置tasks.json实现一键编译运行:

{ "version": "2.0.0", "tasks": [ { "label": "Build LVGL", "type": "shell", "command": "make clean && make -j4", "group": "build" } ] }

7.2 常见错误的排查方法

遇到编译错误时,建议:

  1. 检查所有子模块是否在正确分支
  2. 确认SDL2开发包完整安装
  3. 查看Makefile中的路径配置
  4. 尝试减少并行编译线程数(去掉-j参数)

一个典型的错误是缺少lv_conf.h文件,解决方法:

cp lvgl/lv_conf_template.h lvgl/lv_conf.h

8. 项目结构与代码组织建议

8.1 理解LVGL模拟器的代码架构

LVGL模拟器项目主要包含三个部分:

  1. lvgl:核心图形库源码
  2. lv_drivers:显示和输入设备驱动
  3. 应用代码:main.c和示例程序

建议在开发时保持这种结构,将自定义代码放在单独的目录中。

8.2 添加自定义组件的正确姿势

要添加新组件,最佳实践是:

  1. 在lvgl/src/extra目录下创建新文件夹
  2. 编写组件源码和头文件
  3. 修改lv_conf.h启用组件
  4. 在main.c中测试组件

记得在Makefile中添加新文件的编译规则,否则会出现链接错误。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 10:48:18

Python金融数据获取终极指南:3分钟掌握同花顺问财数据获取

Python金融数据获取终极指南:3分钟掌握同花顺问财数据获取 【免费下载链接】pywencai 获取同花顺问财数据 项目地址: https://gitcode.com/gh_mirrors/py/pywencai 想要快速获取高质量的金融数据吗?pywencai是你的完美解决方案。这个Python工具让…

作者头像 李华
网站建设 2026/5/16 10:42:21

终极指南:如何为yt-dlp-gui扩展新的视频平台支持

终极指南:如何为yt-dlp-gui扩展新的视频平台支持 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui 你是否曾遇到过想要下载某个小众视频平台的视频,却发现yt-dlp-gui无法识别链接&am…

作者头像 李华
网站建设 2026/5/16 10:40:57

独立开发者如何利用Taotoken快速验证多个大模型的产品创意

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken快速验证多个大模型的产品创意 对于独立开发者或小型工作室而言,在产品原型阶段验证技术方…

作者头像 李华
网站建设 2026/5/16 10:39:28

保姆级教程:将LabelImg标注的VOC数据一键转为Ultralytics RT-DETR训练格式

从VOC到RT-DETR:零基础完成目标检测数据格式转换实战 当你第一次尝试用Ultralytics框架训练RT-DETR模型时,最令人头疼的往往不是模型调参,而是数据准备阶段——特别是当你的标注数据还停留在LabelImg生成的VOC格式(XML文件&#x…

作者头像 李华
网站建设 2026/5/16 10:36:04

告别密集计算:用SpConv稀疏卷积加速3D点云处理(附PyTorch代码示例)

告别密集计算:用SpConv稀疏卷积加速3D点云处理实战指南 在自动驾驶和机器人感知领域,LiDAR点云数据的处理一直是计算密集型任务的代表。传统3D卷积神经网络在处理这类数据时,往往需要消耗大量显存和计算资源,而实际上点云数据的有…

作者头像 李华
网站建设 2026/5/16 10:33:04

Pandora开源项目:从零到一的云服务器部署实战

1. Pandora项目与云服务器部署概述 Pandora作为GitHub上热门的开源项目,本质上是一个基于ChatGPT API的第三方客户端,能够帮助用户更便捷地与AI对话。不同于直接使用官方服务,Pandora提供了更多自定义选项和本地化部署能力。选择云服务器部署…

作者头像 李华