编译一个32位平台的内核时,出现以下错误提示:linux
libschw.a: could not read symbols: File format not recognized工具
因而进入相应的目录发现,libschw.a这个文件是存在的,可是为啥编译不过呢,一样的编译在另一个64位平台却没有这个报错。this
$ 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库后,从新编译,问题解决。