MSYS2 LVGL模拟环境搭建

本文说明在windows下如何利用msys2搭建lvgl模拟环境。

安装MSYS2 链接到标题

下载MSYS2 链接到标题

64bit Windows在https://sourceforge.net/projects/msys2/files/Base/x86_64/下选择下载合适的版本,例如我希望不安装就直接下载 msys2-base-x86_64-20190524.tar.xz

安装 链接到标题

直接解压缩msys2-base-x86_64-20190524.tar.xz,然后进入msys64双击msys2_shell.bat就会弹出MSYS2的cli窗口,在这下面的操作差不多就和linux一样了

安装编译依赖 链接到标题

首先更新源,更新过程中可能会重新安装一些包,会有重启msys2的要求

pacman -Syu

安装编译/调试/下载 lvgl需要的包

pacman -S git
pacman -S make
pacman -S gcc
pacman -S gdb
pacman -S mingw-w64-x86_64-SDL2

问题处理 链接到标题

  1. 一定要用pacman -Syu更新源 不能只用"pacman -Sy", 否则安装SDL2的时候一些包会出现下面问题
Child process exited with status 127
  1. 下载包出问题
repo.msys2.org : Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds

到http://mirrors.ustc.edu.cn/msys2/去找对应的包,下载下来后方到msys64\var\cache\pacman\pkg下面,再执行安装 3.设置代理 和linux下面的方法一样

export http_proxy="ip:port"

LVGL编译 链接到标题

下载LVGL 链接到标题

git clone --

编译 链接到标题

cd
make

编译问题处理 链接到标题

  1. SDL/SDL.h: No such file or directory 在lv_drivers\display\display.mk中添加SDL2的头文件路径
CFLAGS += "-I/e/program/msys64/mingw64/include"

2.‘_beginthreadex’ undeclared 这是由于用了SDL的thread,在windows下需要依赖,目前没有找到直接处理方法,可以通过修改main.c绕过: 屏蔽掉hal_init中的

//SDL_CreateThread(tick_thread, "tick", NULL);

在main()的while中添加lv_tick_inc(5);

  while (1) {
    /* Periodically call the lv_task handler.
     * It could be done in a timer interrupt or an OS task too.*/
    lv_task_handler();
    usleep(5 * 1000);
	lv_tick_inc(5);
  }
  1. 找不到 -lSDL2 在Makefile中添加SDL2 lib的路径
LDFLAGS ?=  -lm -L/e/program/msys64/mingw64/bin -lSDL2

运行 链接到标题

make完成后会生成一个demo.exe,在MSYS2下直接执行

./demo.exe

会遇到说找不到SDL2.dll的问题,将msys64/mingw64/bin下的SDL2.dll拷贝到demo.exe一个目录即可。运行起来结果如下 demo

这是lvgl 7.0的效果图,比6.1.2之前的版本要好看不少,这可能是因为lvgl开始由公司运营的缘故。lvgl 7.0相较于之前的6.x的版本在style上变化较大,只能通过手动写代码迁移。