在虚拟机中编译imx6ull开发板的字符驱动文件报错关于freetype的问题

时间:2024-10-28 07:33:42

        场景介绍:开发板使用的是韦东山老师的inx6ull pro开发板,虚拟机是韦东山老师课程配套的,目前的学习是基于领绿的linux驱动测试程序

        当然如果你使用其他的版本的 虚拟机 ,其他型号的 开发板 ,其他的 教程 学习,亦或是开发其他内容,希望这篇文章能对你起到帮助

        在开发驱动程序的时候出现了一个问题,当我写好代码准备执行 make -j16 进行编译的时候,出现了报错

/home/book/imx6ull/xf_project/ui/lvgl/src/extra/libs/freetype/lv_freetype.c:12:10: fatal error: ft2build.h: No such file or directory
 #include "ft2build.h"
          ^~~~~~~~~~~~
compilation terminated.
ui/lvgl/CMakeFiles/lvgl.dir/build.make:1041: recipe for target 'ui/lvgl/CMakeFiles/lvgl.dir/src/extra/libs/freetype/lv_freetype.c.o' failed
make[2]: *** [ui/lvgl/CMakeFiles/lvgl.dir/src/extra/libs/freetype/lv_freetype.c.o] Error 1
make[2]: *** Waiting for unfinished jobs....
[ 18%] Building C object ui/lvgl/CMakeFiles/lvgl.dir/src/extra/lv_extra.c.o
[ 18%] Building C object ui/lvgl/CMakeFiles/lvgl.dir/src/extra/others/fragment/lv_fragment.c.o
CMakeFiles/Makefile2:149: recipe for target 'ui/lvgl/CMakeFiles/lvgl.dir/all' failed
make[1]: *** [ui/lvgl/CMakeFiles/lvgl.dir/all] Error 2
Makefile:135: recipe for target 'all' failed
make: *** [all] Error 2

        报错内容如下

         首先我进行了检查,是否 makefile 缺少库的链接

        实际上并没有

        然后想起一个东西

        之前我把freetype文件下的 include 文件拷贝到 交叉编译工具链的路径 include 文件夹下,但是freetype的头文件有两层包含,没有办法及时的访问到头文件

        所以我们需要将其目录进行移动,将目录下的所有文件移动到上一级目录

        对于我的情况来说是这样:
       

  下边是我的交叉编译工具链存放的freetype的内容

/home/book/imx6ull/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/freetype2
大家根据自己存放的交叉编译工具链位置路径需要进行个别更改
mv /home/book/imx6ull/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/freetype2/* /home/book/imx6ull/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include

        这个mv移动操作就是将freetype/*下的所有文件移动到上一级目录include/下

        完成这个步骤之后,再次编译就会发现

        编译成功了