试用 LVGL Pro,一套完整的工具包,助您高效构建、测试、分享和交付 UI!
LVGL
公告

在 RZ/G2L 上用 Ubuntu 运行 LVGL

第三篇里的那条 apt install,在跑着 Ubuntu 的瑞萨 RZ/G2L 上同样有效,17 秒就能把 LVGL 的 3D 卡车 demo 跑在板子的 Mali GPU 上。

安德烈·科斯塔安德烈·科斯塔8 分钟阅读
在 RZ/G2L 上用 Ubuntu 运行 LVGL

在第三篇里,我们介绍了如何用 liblvgl-sdl2-dev 在桌面上运行 LVGL。 这在开发阶段能让你很快上手,但还有另一种用法,和 LVGL 实际运行的各种嵌入式设备直接相关。

瑞萨 RZ/G2L 原生支持 Ubuntu,这意味着同样的一条 apt install 在它上面也能用。

在这篇文章里,我会带你一步步把 LVGL 的 3D 卡车 demo 跑在板子的 Mali GPU 上。

因为 LVGL 可以直接通过 apt 安装,我们不需要自己构建 LVGL,也就省掉了一整套交叉编译环境。

这块板子支持的 Ubuntu 镜像是 Server 版本,所以我们不会有桌面环境。反正我们也用不上, 因为我们会通过 DRM 直接驱动 GPU。

从开机的板子到卡车 demo#

这些命令都需要在板子上执行,通过 SSH 或者串口控制台都行。如果你还没有把 Ubuntu 装上去, 可以先跳到后面,装好再回来。

1. 安装构建工具

sudo apt update
sudo apt install software-properties-common build-essential cmake git
bash

software-properties-common 提供 add-apt-repository,build-essential 则提供编译器。

2. 添加两个 PPA

sudo add-apt-repository ppa:ubuntu-on-renesas/public-ppa
sudo add-apt-repository ppa:lvgl/lvgl
bash

第一个提供瑞萨的 GPU 驱动,第二个就是第三篇里LVGL 自己的 PPA。

3. 安装 GPU 驱动和 LVGL

sudo apt install libmali-renesas-rz-g2l-g2lc liblvgl-drm-3d-dev
bash

liblvgl-drm-3d-dev 是启用了 3D 的 LVGL DRM 构建,libmali-renesas-rz-g2l-g2lc 则是板子上 Mali GPU 的用户态驱动。 两者都是预编译好的 ARM64 软件包,所以这一步只是把它们下载下来,不用编译任何东西。

4. 获取 Linux 移植工程

git clone https://github.com/lvgl/lv_port_linux.git
cd lv_port_linux
git checkout bacde48d98949689379f70ca7fa471bd270613a5
bash

这里我会用 lv_port_linux,它是 LVGL 在 Linux 上的参考工程: 它帮你处理显示和输入设备的选择,让你很快就能跑起一个完整的 LVGL 应用程序。

5. 构建 demo

cmake -B build -DCMAKE_BUILD_TYPE=Release -DLVGL_USE_INSTALLED=ON -DCONFIG_LV_USE_DEMO_TRUCK=ON
cmake --build build -j$(nproc)
bash

关键的是 LVGL_USE_INSTALLED=ON 这个开关:它让工程去用 apt 装好的那份 LVGL,而不是编译自带子模块里的副本。 CONFIG_LV_USE_DEMO_TRUCK=ON 则选中了 3D 卡车 demo。

6. 运行

./build/bin/lvglsim
bash
LVGL 的 3D 卡车 demo 运行在瑞萨 RZ/G2L SMARC 评估板套件上
RZ/G2L SMARC 评估板套件上的 3D 卡车 demo,分辨率 1024x768

这是一个由 GPU 渲染的 3D 模型,在 1024x768 分辨率下大约有 30 FPS。

触摸和鼠标支持

这个 demo 不需要任何特殊权限就能渲染。如果你还需要输入设备,就要把你的用户加入 input 组:

sudo usermod -aG input $USER
bash

然后退出重新登录(或者在当前 shell 里执行 newgrp input)。

配置 Ubuntu#

RZ/G2L SMARC 评估板套件
SoCRenesas RZ/G2L (R9A07G044L)
CPU2x Cortex-A55 @ 1.2 GHz
MCUCortex-M33 @ 200 MHz
GPUMali-G31 @ 500 MHz
RAM2 GB DDR4
Flash64 GB eMMC + 512 Mb QSPI
Display1024x768

Canonical 为瑞萨的 IoT 开发板提供 Ubuntu 镜像,其中就包括 RZ/G2L:

选服务器镜像,不要选桌面镜像

RZ/G2L 的内存不够流畅地跑一整套 GNOME 桌面,所以请选 Ubuntu Server。 这里本来也用不上桌面:LVGL 通过 DRM/KMS 直接渲染到显示屏,3D 渲染则走同一条路径上的 EGL。

整套流程里没有任何 Wayland 合成器或者 X server。

板子启动、拿到 shell 之后,回到上面的步骤,就能把整个应用程序跑起来。

用 apt 做部署#

预编译的软件包本身是给开发者用的便利工具,省掉了自己编译依赖的功夫。在这里,我们用它把库直接部署到目标设备上; 而且目标板上就有编译器,应用程序也可以就地编译。

LVGL 为 x86_64 和 ARM64 都发布了可以直接下载的软件包,所以这里跑的是同一批 .deb 文件,来自同一个 PPA, 和第三篇里装在桌面上的那些一模一样。变的只是装哪个包:用 liblvgl-drm-3d-dev 代替 liblvgl-sdl2-dev, 因为板子上没有桌面可以开窗口。已发布的这 8 个软件包,存在的意义正是让这种切换只需要改一行里的一个词。

直接在目标板上编译#

通常来说,这样一个应用程序会在主机上交叉编译:一套交叉工具链,一个装有目标平台头文件和库的 sysroot, 一个 CMake 工具链文件,最后再加一步拷贝。这套做法当然是可行的,尤其是当你想按自己的需求裁剪 LVGL 配置、 再把应用程序部署出去的时候。

而这里,这些步骤全都省掉了。因为我们跑的是 Ubuntu,直接在目标板上装一个编译器就行; 而且 LVGL 已经是预编译的,我们不用操心在双核 Cortex-A55 上编译整个库, 因为构建这个应用程序用不到 20 秒:

$ time cmake --build build -j$(nproc)
[  6%] Building C object demos/lv_demo_truck/CMakeFiles/lv_demo_truck_ui.dir/lv_demo_truck.c.o
[ 13%] Building C object CMakeFiles/lvgl_linux.dir/src/lib/driver_backends.c.o
...
[100%] Linking CXX executable bin/lvglsim
[100%] Built target lvglsim
 
real    0m17.127s
bash

准确地说,是 17 秒。

需要说明的是,在这块板子上编译 LVGL 本身则是另一回事了。

小结#

这篇文章为 LVGL 的构建与安装系列画上了句号。我们先看到 LVGL 现在可以自动拉取自己的依赖, 接着是把自己链接了哪些库记录下来,这才让一个 正确的 .deb 成为可能。最后我们落在了 LVGL 最擅长的地方:真实的嵌入式设备上。

如果某个软件包出了问题,或者你希望我们把 LVGL 发布到别的开发板或别的配置上,欢迎到 github.com/lvgl/lvgl/issues 提 issue。

在 Linux 上构建与分发 LVGL第 4 部分,共 4 部分

常见问题#

关于作者

安德烈·科斯塔
安德烈·科斯塔

LVGL Open 团队负责人

LVGL Open 团队负责人,推动开源嵌入式图形库的开发和应用。

认识博客背后的作者们

了解那些分享 LVGL 知识的优秀作者们

查看作者

订阅我们的通讯 不错过任何关于 LVGL 的新闻。我们每月最多发送 2 封邮件。

LVGL

LVGL 是最受欢迎的免费开源嵌入式图形库,支持任何 MCU、MPU 和显示类型,助您构建精美的用户界面。

我们还提供 UI 设计、实现和咨询等服务。

© 2026 LVGL。保留所有权利。
YouTubeGitHubLinkedIn