編譯一個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庫後,從新編譯,問題解決。