【LVGL】lvgl 最新安装教程(含Window & Ubuntu 平台)

模拟器介绍

LVGL · GitHub 官网的网站

在这里插入图片描述

可以看到LVGL是核心代码,其他平台的移植代码都要基于这个LVGL核心代码,下面介绍一下这几种的区别

1> lvgl

lvgl/lvgl Github链接

在这里插入图片描述

  • 主库:这是 LVGL 的核心库
  • 用途
    • 包含所有核心功能控件的实现,例如绘图引擎、动画、样式系统、多语言支持等。
    • 仅提供与硬件无关的通用代码(例如控件逻辑和 API)。
    • 没有内置任何硬件相关的驱动,也没有具体的移植代码。
    • 这是 LVGL 开发的基础,几乎所有 LVGL 项目都会依赖它。

2> lv_port_linux

lvgl/lv_port_linux Github链接

在这里插入图片描述

  • 移植项目:LVGL 在 Linux 平台(如 PC 或嵌入式 Linux 设备)上的移植代码。
  • 用途
    • 提供 LVGL 在 Linux 系统上运行的移植示例。
    • 包括显示设备(framebuffer、SDL 等)和输入设备(鼠标、触摸屏等)的驱动代码。
    • 方便在 Linux 系统上快速运行和调试 LVGL 项目。
  • 包含内容
    • 显示驱动:支持通过 Linux framebuffer 或 SDL 渲染。
    • 输入驱动:支持鼠标和键盘输入模拟触摸操作。
    • 配置文件:提供了 LVGL 的移植配置和示例代码。

3> lv_port_eclipse

lvgl/lv_port_pc_eclipse Github链接

  • 开发环境模板:这是 LVGL 官方提供的一个 基于 Eclipse IDE 的移植模板。
  • 用途
    • 提供在 PC 模拟器中运行 LVGL 项目的示例。
    • 使用 Eclipse 和 MinGW/SDL2 作为开发环境。
  • 包含内容
    • 模拟器代码:通过 SDL2 库在 Windows 或 Linux 的模拟器中运行 LVGL 项目。
    • Eclipse 项目模板:已经配置好 LVGL 和 SDL2 的开发环境,开箱即用。
    • 示例代码:包含简单的 LVGL 示例代码,帮助快速上手。

lv_port_eclipse 8.3 搭建

下载 lv_port_eclipse

在这里插入图片描述

下载lvgl

在这里插入图片描述

下载lvgl_driver

在这里插入图片描述

新建工程

将下载来的压缩包全部解压,注意 注意 注意解压路径下千万不能有中文。

在这里插入图片描述

lv_port_pc_eclipse在该目录下会有两个空文件夹分别为lvgllv_drivers,将解压后的另外两个文件夹 里面的内容(ctrl + a全选复制就好放对应的放到这两个文件夹中。

在这里插入图片描述

MinGW安装

1> 压缩包下载

mingw64.zip

将该压缩包解压缩到自己对应的开发环境文件夹,例如我是习惯将开发工具及相关环境放在E:\Environment下,同时还是 注意 路径不能有中文空格。

在这里插入图片描述

2> 配置环境变量

在这里插入图片描述

3> 验证环境

在这里插入图片描述

CMake安装

https://cmake.org/download/

在这里插入图片描述

验证安装成功:cmake --version 有些电脑添加环境变量后需要重启才能生效

在这里插入图片描述

VScode编译运行

安装插件

打开项目

打开后,默认会编译一次

在这里插入图片描述

点击Build对源码进行编译,编译完成后,会多出binbuild目录,将mingw64\x86_64-w64-mingw32\bin里的SDL2.dll拷贝到bin这个目录中。

在这里插入图片描述

然后点击下方栏目三角形的运行按钮,运行结果如下:

没有GCC状态栏解决办法

在这里插入图片描述

打开CMake tool设置

在这里插入图片描述

添加 status 过滤,并将hidden选项改成visible

在这里插入图片描述

lv_port_linux搭建9.2版本(推荐)

https://github.com/lvgl/lv_port_linux/tree/release/v9.2

https://github.com/lvgl/lvgl/tree/72dfc1d75198a126dd495483d9cbc5b27c6c882b

在这里插入图片描述

在这里插入图片描述

  • 首先解压这两个文件,然后解压出来的lv_linux目录下的lvgl是空的,这时候再把解压后的lvgl里面的所有东西复制到lv_linux目录下的lvgl目录下。

ubuntu配置SDL

1. 进入纯命令行,不然会和原先的图形界面起冲突,下面的F1~F6取决于你的ubuntu系统版本

Ctrl + alt + F1 ~ F6

2. 安装图形界面库

由于纯命令行无法复制,所以下面的代码只能 手敲 注意不要敲错了

sudo apt-get update   #更新软件源 
sudo apt-get install libsdl2-2.0-0 libsdl2-dev libsdl2-mixer-dev libsdl2-image-dev libsdl2-ttf-dev libsdl2-gfx-dev -y  #安装SDL图形库

3. 解压源码到家目录

  • 不在家目录也行,但是 千万 不要放在中文路径下,指不定就报些奇奇怪怪的错误
tar  -xzvf lv_port_linux_ubuntu_sdl.tar.bz   -C  ~/   #解压到家目录 
 cd  ~/lv_port_linux/                                  #进入源码目录

我是下的9.0版本,然后在把里面默认的lvgl下过来了,发现在lvgl下的src下没有driver这个文件夹,也就是没有相关的sdl驱动,很坑。所以我重新选了个lvgl9.0版本下载过来替换掉。至于Makefile不知道为什么死活make不了,已放弃改用cmake了。

!!!改用9.2版本


后续:!!!

第二天早上过去github一看,发现9.0版本的Lv_port_linux里面的核心依赖lvgl里的src文件夹下面又有drviers这个驱动文件夹了,天塌了,我只能说 RNM,退钱。搞了我半天。*

还有就是为什么 Makefile 用不了,这时候我去看了一下github 9.0版本的最下面的说明

😂😅😅这件事告诉我们移植别人代码前一定要好好看说明文档,不然真的会吐血

修改LVGL配置

首先我们使用的是SDL2驱动,而LVGL9.2默认配置是使用THORVG

所以我们要修改 lv_conf.h里面的三个宏,启用SDL,禁用THORVG

温馨提示😁😁ctrl+f搜索修改

#define LV_USE_LINUX_FBDEV	0
#define LV_USE_LINUX_DRM	0
#define LV_USE_VG_LITE_THORVG  0
#define LV_USE_THORVG_INTERNAL 0
#define LV_USE_SDL		    1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

还有这个不禁用的话可能也会报错,我的就报错了,但不一定每个工程都这样。

在这里插入图片描述

修改CMakeLists.txt

检查有没有链接SDL库的代码不然编译找不到SDL库可能会报错。

如过没有装g++编译器下面设置C++标准会报错,但是设置主要是为了方便移植到c++环境。

可以选择注释或者安装,下面给出安装代码:

sudo apt-get update
sudo apt—get install g++
cmake_minimum_required(VERSION 3.10)
project(lvgl)

# 设置 C 和 C++ 标准
set(CMAKE_C_STANDARD 99)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 设置可执行文件的输出路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

# 添加子目录(lvgl)
add_subdirectory(lvgl)
target_include_directories(lvgl PUBLIC ${PROJECT_SOURCE_DIR})

# 找到 SDL2 库
find_package(SDL2 REQUIRED)
if (SDL2_FOUND)
    include_directories(${SDL2_INCLUDE_DIRS})
else()
    message(FATAL_ERROR "SDL2 not found. Please install SDL2 development files.")
endif()

# 可执行文件
add_executable(main main.c mouse_cursor_icon.c)

# 链接库 
target_link_libraries(main
    lvgl
    lvgl::examples
    lvgl::demos
    lvgl::thorvg 
    ${SDL2_LIBRARIES}  
    m
    pthread
)

修改main函数

main函数可以精简成这个版本,直接使用SDL作为显示输出,保留默认的main函数也可以

#include "lvgl/lvgl.h"
#include "lvgl/demos/lv_demos.h"
#include <unistd.h>
#include <pthread.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
 
//获取默认环境变量的值
static const char * getenv_default(const char * name, const char * dflt)
{
    return getenv(name) ?: dflt;
}
 
//初始化LVGL的显示框架
static void lv_linux_disp_init(void)
{
    const int width  = atoi(getenv("LV_SDL_VIDEO_WIDTH") ?: "800");
    const int height = atoi(getenv("LV_SDL_VIDEO_HEIGHT") ?: "480");
 
    lv_sdl_window_create(width, height);
}
 
int main(void)
{
    //初始化LVGL库 
    lv_init();
    /*Linux display device init  初始化显示设备 */
    lv_linux_disp_init();
    // init input device   初始化输入设备 
    lv_sdl_mouse_create();  //鼠标
    lv_sdl_keyboard_create(); //键盘
    lv_sdl_mousewheel_create(); //滚轮
    
    /*Create a Demo   创建一个示例程序*/
    // lv_example_button_1();
    // lv_demo_widgets();
    // lv_demo_widgets_start_slideshow();
    // lv_example_ime_pinyin_2();
    
    /*Handle LVGL tasks   循环处理LVGL的任务*/
    while(1) {
        lv_timer_handler();
        usleep(5000);
    }
    return 0;
}

编译

确保自己在ubuntu装了cmake。如果没有就安装一下

sudo apt update   //更新软件源
sudo apt install cmake  //安装cmake
cmake --version    //安装完验证是否能输出版本号,如果可以的话表示安装成功

编译

mkdir build
cd build 
cmake ..
make -j12  //开启12条线程编译

若果

运行

在当前项目根目录下会有一个bin,里面存放了可执行文件main

./bin/main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值