(一)摘要
最近在学习韦东山老师的驱动入门课程,在freetype环境安装时碰到到了一下这个报错,于是想记录下自己的安装过程方便其他碰到问题的同学解决!
(二)碰到的报错
我是用的是IMX6ULL PRO开发板在开始跟着文档上做的步骤感觉没有问题,但是在进行freetype-2.10.2文件下的make命令时出现了以下报错
/home/book/nfs_rootfs/10_freetype/libpng-1.6.37/tmp/lib/libpng16.so:
file not recognized: file format not recognized collect2: error: ld
returned 1 exit status config.mk:55: recipe for target
‘/home/book/nfs_rootfs/10_freetype/freetype-2.10.2/objs/libfreetype.la’
failed make: ***
[/home/book/nfs_rootfs/10_freetype/freetype-2.10.2/objs/libfreetype.la]
Error 1
(三)原因分析
在查便文档和群友的帮助下,找到了原因原来是zlib依赖没有安装,因为在视频中说arm-buildroot-linux-gnueabihf-gcc是自带zilib的,于是我也就 没去安装它而是直接去安装了libpng-1.6.37和freetype-2.10.2,看来还是要安装的。
(四)如何安装zilb
1.设置交叉编译工具链
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
2. 解压zlib-1.2.11.tar.gz
tar -xzf zlib-1.2.11.tar.gz
3.进入zlib-1.2.11文件夹
cd zlib-1.2.11
4.配置编译参数生成Makefile
./configure --prefix==$PWD/tmp --shared --static
–prefix:指定安装目录
–shared:编译生成.so动态库
–static:编译生成.a静态库
5.修改Makefile
zlib的configure不支持设置–host项,因此需要手动更改Makefile,vim命令打开Makefile文件,将其中的CC、AR、RANLIB等都修改为arm-linux交叉编译器的相关参数
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-gcc
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-ar
/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/arm-buildroot-linux-gnueabihf-ranlib
上面列出的是我Ubuntu的路径,大家如果都是按韦老师的课程的话应该都一样
6.编译
make
7.安装
make install
8.复制头文件和库文件到系统(工具链)默认文件夹
cp include/* -rf /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/include
cp lib/* -rfd /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin/../lib/gcc/arm-buildroot-linux-gnueabihf/7.5.0/../../../../arm-buildroot-linux-gnueabihf/lib
本文参考自: