linux交叉编译时报错 libfreetype.so: file not recognized: File format not recognized

root@ubuntu:/home/linuxsystemcode/04th_print_info# arm-none-linux-gnueabi-gcc -finput-charset=GBK -o example1 example1.c  -lfreetype -lm
/usr/local/arm/arm-2009q3/bin/../arm-none-linux-gnueabi/libc/lib/libfreetype.so: file not recognized: File format not recognized
collect2: ld returned 1 exit status

如上图,交叉编译的时候出现无法识别libfreetype.so文件的错误信息,到我们的交叉编译工具链的C库目录下使用以下命令查看该文件的格式

root@ubuntu:/usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib# file libfreetype.so
libfreetype.so: symbolic link to `libfreetype.so.6.9.0'

通过返回的提示信息我们知道它指向libfreetype.so.6.9.0,于是我们再通过file命令查看libfreetype.so.6.9.0,发现是x86-64的,而我要编译的是arm版本的,所以这里报错了。问题的根源找到了,那怎么解决呢?

 

解决办法:在安装freetype的时候配置为ARM-Linux版本的即可,命令如下

tar xjf freetype-2.4.10.tar.bz2     解压
./configure --host=arm-none-linux-gnueabi        配置为ARM-Linux
make
make DESTDIR=$PWD/tmp install安装到一个临时目录,再把里面的头文件拷贝到我们的交叉编译工具链里面去



root@ubuntu:/usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib# file libfreetype.so.6.9.0
libfreetype.so.6.9.0: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped    现在变成ARM版本的了

把tmp/usr/local/lib/*  复制到 /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/lib

把tmp/usr/local/include/*  复制到 /usr/local/arm/arm-2009q3/arm-none-linux-gnueabi/libc/usr/include

 

 

参考文章:https://blog.csdn.net/u011113596/article/details/80325081

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值