当前位置: 技术问答>linux和unix
could not read symbols: File in wrong format
来源: 互联网 发布时间:2016-10-17
本文导语: 我在使用arm-linux-gcc编译程序的时候出现以下错误提示: arm-linux-gcc -Wall -I../../../include -I../../../../include -I../../../../include/linux -c ../../readwrite.c arm-linux-gcc -o readwrite -L../../../../lib/linux/ixp4x5 readwrite.o -lr...
我在使用arm-linux-gcc编译程序的时候出现以下错误提示:
arm-linux-gcc -Wall -I../../../include -I../../../../include -I../../../../include/linux -c ../../readwrite.c
arm-linux-gcc -o readwrite -L../../../../lib/linux/ixp4x5
readwrite.o -lrfid -lrfidtx -lcpl -lpthread -lrt -lstdc++
../../../../lib/linux/ixp4x5/librfid.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [readwrite] Error 1
librfid.so文件是厂商提供的,在ixp425文件见下存在,我也拷贝此文件到/usr/lib中,并运行了ldconfig命令,问什么会出现这错误,请高手帮帮忙,谢谢~~
arm-linux-gcc -Wall -I../../../include -I../../../../include -I../../../../include/linux -c ../../readwrite.c
arm-linux-gcc -o readwrite -L../../../../lib/linux/ixp4x5
readwrite.o -lrfid -lrfidtx -lcpl -lpthread -lrt -lstdc++
../../../../lib/linux/ixp4x5/librfid.so: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [readwrite] Error 1
librfid.so文件是厂商提供的,在ixp425文件见下存在,我也拷贝此文件到/usr/lib中,并运行了ldconfig命令,问什么会出现这错误,请高手帮帮忙,谢谢~~
|
linux command:
which gcc
gcc -v
which gcc
gcc -v
|
gcc-4.0以上可以支持ARM的EABI,你也可以这样:
arm-linux-gcc -o hello hello.c
arm-linux-readelf -h hello
这一行会显示是否使用了EABI,
Flags: 0x202, has entry point, GNU EABI, software FP
上面这一行表示不使用EABI(能和其它编译器链接的EABI表示为Version5 EABI),软浮点
你也可以使用上面的命令测试一下那个librfid.so的输出,只有当格式完全一致时才能连接。
arm-linux-gcc -o hello hello.c
arm-linux-readelf -h hello
这一行会显示是否使用了EABI,
Flags: 0x202, has entry point, GNU EABI, software FP
上面这一行表示不使用EABI(能和其它编译器链接的EABI表示为Version5 EABI),软浮点
你也可以使用上面的命令测试一下那个librfid.so的输出,只有当格式完全一致时才能连接。
|
请问我原来的arm板子是不支持eabi的,现在想升级到支持eabi的,应该怎样做?是不是应该重新烧个支持eabi的内核?那我原来板子上跑的应用程序是不是都要重新编译呢?非常感谢!
|
file librfid.so,看看此文件的格式。
你的工具链跟librfid.so的格式不区配,重新用你的工具编译下它吧。
你的工具链跟librfid.so的格式不区配,重新用你的工具编译下它吧。
|
文件格式可能跟你不是 arm 下编译的。
用file 命令查看一下。
如果是厂商提供,那需要他们提供你所需要的平台下的编译文件。
用file 命令查看一下。
如果是厂商提供,那需要他们提供你所需要的平台下的编译文件。
|
跟eabi有关吗?你的工具链支持eabi吗?
不行就要厂商用你的工具链编译库
要么你就用厂商的工具链试试
不行就要厂商用你的工具链编译库
要么你就用厂商的工具链试试
|
librfid.so: ELF 32-bit MSB shared object, ARM, version 1 (SYSV), not stripped
-------------
lz把你的工具链编译出的库信息也拿来比较一下
-------------
lz把你的工具链编译出的库信息也拿来比较一下