您的位置:首页 > 其它

could not read symbols: File format not recognized

2016-12-03 13:29 666 查看

arm-linux-gnueabi-readelf工具解决问题

编译一个32位平台的内核时,出现如下错误提示:

libschw.a: could not read symbols: File format not recognized

于是进入相应的目录发现,libschw.a这个文件是存在的,但是为啥编译不过呢,同样的编译在另外一个64位平台却没有这个报错。

思路:是否与32位64位平台有关?

使用readelf来查看一下这个库,

$ arm-linux-gnueabi-readelf -h modules/aw_schw/libschw
File: modules/aw_schw/libschw(aw_schw_lib.o)
ELF Header:
Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class:                             ELF64
Data:                              2's complement, little endian
Version:                           1 (current)
OS/ABI:                            UNIX - System V
ABI Version:                       0
Type:                              REL (Relocatable file)
Machine:                           <unknown>: 0xb7
Version:                           0x1
Entry point address:               0x0
Start of program headers:          0 (bytes into file)
Start of section headers:          161192 (bytes into file)
Flags:                             0x0
Size of this header:               64 (bytes)
Size of program headers:           0 (bytes)
Number of program headers:         0
Size of section headers:           64 (bytes)
Number of section headers:         29
Section header string table index: 24
果然,这个库显示是64位的,为了兼容32位的,只能修改Makefile,判断到32位时,使用32位的库。
+ifeq ($(LICHEE_ARCH),arm64)
cp libschw libschw.a
+else
+       cp libschw32 libschw.a
+endif
重新弄一份新32位的libschw32库后,重新编译,问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: