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

发布了42 篇原创文章 · 获赞 10 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37659294/article/details/99689969
今日推荐