在学习Esp8266_ROTS_SDK时,把移植LVGL遇到的问题记录一下,也能给其他初学者一些提示。我也是刚学习ESP8266,哪些地方说的不对的,请大家多多指教。
1.在命令框中输入,make menuconfig,调出配置窗口,找到LVGL的选项。将下图中第一个选项取消掉。如果不取消,则会使用内部默认的lv_conf_internal.h 和 lv_conf_kconfig.h,此时用户自己的lv_conf.h是不起作用的。建议使用自己的lv_conf.h,因为每次调用make menuconfig配置完保存后,编译速度都非常慢,整个工程都会重新编译一次,很麻烦。
2.编译时如果报错,例如以下错误:
undefined reference to `lv_menu_sidebar_header_cont_class'
undefined reference to `lv_menu_main_header_cont_class'
undefined reference to `lv_chart_class'
undefined reference to `lv_meter_class'
undefined reference to `lv_menu_class'
undefined reference to `lv_menu_sidebar_cont_class'
undefined reference to `lv_menu_main_cont_class'
undefined reference to `lv_menu_cont_class'
undefined reference to `lv_menu_page_class'
undefined reference to `lv_menu_section_class'
undefined reference to `lv_menu_separator_class'
undefined reference to `lv_chart_class'
undefined reference to `lv_meter_class'
可以尝试在lvgl文件夹下,找到component.mk文件,看看是否有以下几行,如果没有,就添加以下几行。缺哪个就添加哪个。
src/draw/sw \
src/extra/widgets/chart \
src/extra/widgets/menu \
src/extra/widgets/meter \
然后再编译试试。
3.建议把lv_conf.h中的 LV_USE_FLEX 和 LV_USE_GRID打开,否则可能会出现编译错误,提示某些类型未定义。例如lv_obj_set_flex_flow未定义,或者lv_flex_flow_t未定义。
后续如果有LVGL移植其他问题,会持续更新,谢谢大家!