【已解决】交叉编译freetype第三方库报错../arm-linux-gnueabihf/bin/ld: cannot find -lz/cannot find -lpng

目录

项目场景:

问题描述

原因分析:

解决方案


项目场景:

        近日正在做大四毕设项目——一个基于IMX6ULL的多媒体播放器,这个项目需要安装一些第三方库,如libpng用于显示png图片,zlib用于数据解压缩,freetype作为软件字体引擎库,同时freetype库交叉编译安装时需要依赖libpng库和zlib库


问题描述

        继上一篇博客解决交叉编译libpng和zlib过程遇到的问题后,接下来就是对libpng和zlib存在依赖的freetype进行交叉编译,在执行./configure配置选项后成功生成Makefile

./configure --prefix=/home/aming/linux/tool/freetype/ --host=arm-linux-gnueabihf --with-png=yes LIBPNG_CFLAGS="-I/home/aming/linux/tool/png/include -L/home/aming/linux/tool/png/lib" LIBPNG_LIBS=-lpng ZLIB_CFLAGS="-I/home/aming/linux/tool/zlib-1.2.10 -L/home/aming/linux/tool/zlib-1.2.10" ZLIB_LIBS=-lz

 

        但在执行Makefile后却出现了报错:

/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lz
/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lpng 


原因分析:

报错显示交叉编译工具链无法链接到-lz和-lpng

红框中这是一段编译命令,根据平时编译应用程序的经验来看,编译器是会根据-lxxx去相应的编译工具链目录中寻找相应的动态/静态库文件,所以报错原因应该是我们没有告知编译器所需的libpng和zlib库文件在哪里? 


解决方案:

直接把得到的头文件、库文件放入工具链的 lib 目录里。别的程序要使用这些库文件时,会很方便。

        那么工具链的 lib 目录是哪里呢?报错信息中已经说了,就是/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/../../../../arm-linux-gnueabihf/这个目录,将编译得到的libpng的库文件拷贝过去,然后重新make、make install即可。

 结果如下,交叉编译安装freetype成功:

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值