交叉编译LVGL进度条
交叉编译, LVGL 进度条小工具。
编译环境:
Linux ubuntu 4.15.0-122-generic #124~16.04.1-Ubuntu SMP Thu Oct 15 16:08:36 UTC 2020 x86_64 x86_64 GNU/Linux
目标板:
Linux linaro-alip 4.19.232 #113 SMP Sat Apr 20 19:13:09 CST 2024 aarch64 GNU/Linux
编译环境
整体的方案是 LVGL8.3 + SDL2 + FreeType。
背景及资料
需求
开发一小的进度条工具, 运行在”智慧能源单元”上。
进度条工具, 通过文件通信方式, 通信方式
文件名: /tmp/lvgl_comm
通信格式: {state},{progress},{text}
state: 进度条工具状态, 0 隐藏; 1 显示
progress: 进度, 0-100
text: 提示文案
提供资料
libSDL2-2.0.so.0.10.0
applesimhei.otf
libfreetype.so.6.16.1
libm-2.31.so
编译器:
gcc-7.3.1-64-gnu/bin/aarch64-linux-gnu-gcc
编译流程
下载 LVGL 8.3
1 | git clone -b v8.3.9 https://github.com/lvgl/lvgl.git |
下载 LVGL_Drivers
1 | git clone -b v8.3.0 https://github.com/lvgl/lv_drivers.git |
安装 sdl2库
1 | apt update && apt install libsdl2-dev |
交叉编译
目标板子的头文件, 动态库
目标板子
Linux linaro-alip 4.19.232 #113 SMP Sat Apr 20 19:13:09 CST 2024 aarch64 GNU/Linux
编译器
aarch64-linux-gnu-gcc
拷贝目标板子依赖的头文件和动态库
/usr/include/aarch64-linux-gnu-gcc
/lib/aarch64-linux-gnu-gcc
本地交叉编译环境
配置定义
lvgl配置文件定义
1 | // lv_conf.h |
lv_drv_conf.h lvgl驱动配置定义
1 | // lv_drv_conf.h |
修改 CMakeLists.txt
编译Ubuntu调试版本
1 | cd build |
编译开发板版本
1 | cmake -D CMAKE_BUILD_TYPE=Debug .. |
改了很多东西。
新增一个界面。
遇到的问题
libSDL2-2.0.so.0.10.0 缺少依赖动态库

依赖的动态库缺少依赖的动态库


glibc版本冲突


源码编译glibc-2.29后链接执行段错误

交叉编译后, GLIBC2.29 找不到对应版本

窗口置顶API不支持(不好处理)



执行结果

Linux动态库选择顺序
编译时
- gcc 编译时参数 -L 指定的路径
- 环境变量 LIBRARY_PATH
- 系统默认库路径 /lib /usr/lib
运行时
- gcc 编译时参数指定 -WI,-rpath
- 环境变量 LD_LIBRARY_PATH
- 系统默认库路径 /lib /usr/lib