韦东山 数码相框 项目学习(三)freetype的移植
要把freetype移植到STM32MP157上,我们主要完成四步
- 源码下载解压
- 配置、编译
- 对应文件复制到对应目录
一、源码下载解压
源码的下载可以进入去https://freetype.org/这个网址进行下载,本次移植我们使用的是2.4.10版本,然后将下载下来的压缩包上传到服务器。
然后执行
tar -jxvf freetype-2.4.10.tar.bz2
进行解压,解压完成后,就会在当前目录下生成一个freetype-2.4.10目录,下一步我们需要进入到这个目录进行配置
二、配置、编译
进入到freetype-2.4.10目录,依次执行以下命令
./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
make
make install
执行完之后会在tmp目录下生成四个目录,我们需要把lib目录和include目录下的文件复制到我们编译工具链的对应目录下,还需要把lib目录下的库文件复制到开发板的/lib目录下,这样我们编译出来的程序才能在开发板上运行。
三、对应文件复制到对应目录
首先需要确定我们自己的编译工具链的目录是在哪里,这个在之前设置过了,我的编译工具链路径是
/home/tao/learn/100ask/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
要找到对应的include目录和lib目录,首先需要进入到上面这个目录
然后返回到上一层目录,也就是
/home/tao/learn/100ask/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/
下,然后使用find命令找到我们的stdio.h头文件
find -name 'stdio.h'
可以看到有以下输出
./arm-buildroot-linux-gnueabihf/include/c++/8.4.0/tr1/stdio.h
./arm-buildroot-linux-gnueabihf/sysroot/usr/include/bsd/stdio.h
./arm-buildroot-linux-gnueabihf/sysroot/usr/include/stdio.h
./arm-buildroot-linux-gnueabihf/sysroot/usr/include/bits/stdio.h
很明显,第三个才是我们所需要的头文件,也就是说,我们要把freetype编译出的include目录下的文件复制到
/home/tao/learn/100ask/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/
这个目录下。
在复制之前,有些bug需要处理以下,我们需要把freetype编译生成的include目录下的freetype2/freetype目录给移动到上一层目录,因为在代码中包含的时候,访问的是freetype而不是freetype2/freetype
然后freetype2就是一个空目录了,可以把它删除掉
然后就可以正式开始复制了
进入到freetype的tmp目录下,执行
cp include/* /home/tao/learn/100ask/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include/ -rd
这样就把头文件复制过去了,接下来就是库文件的复制了。
找到了头文件目录,那么库文件目录也就很好找了,它就是和我们include目录同级的lib目录
/home/tao/learn/100ask/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib
我们再把动态库文件给复制到该目录下,由于lib目录下已经有了freetype的库,这里我们就不再演示了
最后,还需要把库文件复制到开发板,操作都大同小异,这里不再演示