|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; R5 s* [6 }% Q5 j) k2 O! H; mARM-linux-gnueabi-readelf工具解决问题# Z3 y E& o0 w4 J9 Z
编译一个32位平台的内核时,出现如下错误提示:
! e7 C2 w) f* x" T" B+ h$ u- L, X$ _# H; s _
libschw.a: could not read symbols: File format not recognized( Q* Z; O, ], V# \
. `4 f. s6 c1 l6 R
于是进入相应的目录发现,libschw.a这个文件是存在的,但是为啥编译不过呢,同样的编译在另外一个64位平台却没有这个报错。
* C- _4 D8 g6 S8 q9 }* G8 j2 S$ k. M) a: Q4 S9 c
思路:是否与32位64位平台有关?7 U' z/ S/ @( w! j7 ~5 N
使用readelf来查看一下这个库,
6 f" @3 p) \5 Y/ V$ arm-linux-gnueabi-readelf -h modules/aw_schw/libschw, e2 x F6 ?8 d3 ^" P
File: modules/aw_schw/libschw(aw_schw_lib.o)
7 b, [; h8 ~; F5 G) ]ELF Header:
6 b/ m0 k; ?8 d! d8 q- i Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 008 p0 _; r" g1 i/ y+ S
Class: ELF64
' q Y0 }& O/ S X8 Z1 ^; L5 W Data: 2's complement, little endian
8 _; m) A; y8 H! q/ l/ r Version: 1 (current)
" G4 h; Q3 k' P% p& n- R. n9 h( Q9 w4 e2 Q OS/ABI: UNIX - System V3 U! G: ^. o6 V! q+ Q2 N# q$ A8 l( P
ABI Version: 0
" r0 J8 J n! u; H$ ]1 C' L( f) H Type: REL (Relocatable file)( R7 x2 q, O3 j3 o/ g# s
Machine: <unknown>: 0xb7 r' `8 f. x0 m. W/ Y- N
Version: 0x1
9 i( m; |& W5 D! Y3 F Entry point address: 0x09 s- t4 e- w$ ]6 S! [
Start of program headers: 0 (bytes into file)& a9 G8 n- q& |) Q8 \8 h: n8 f
Start of section headers: 161192 (bytes into file)8 a5 T: L' L- J
Flags: 0x0
7 G. E' s' x5 v7 T } Size of this header: 64 (bytes)
8 ]2 h0 w8 ]- J! @4 l# V Size of program headers: 0 (bytes)
8 i+ U. `5 h; S; f+ X; Z* K3 v Number of program headers: 0
% }, p! e9 \* P7 X* J Size of section headers: 64 (bytes)" b$ s. `" n: ]! J v: }6 ~& X
Number of section headers: 29
) F5 u9 u: x# t* { T! } Section header string table index: 24# |- p* H" \# }. E& l+ i
果然,这个库显示是64位的,为了兼容32位的,只能修改Makefile,判断到32位时,使用32位的库。4 y- r9 F$ ` Y( s5 ?; P
+ifeq ($(LICHEE_ARCH),arm64)- C0 z) W, G" X _% l' z) ^
cp libschw libschw.a
9 }( E( u* `+ J; ^: h) H* \- ^6 V+else
1 q2 R- M s, F' r( k+ U5 U+ cp libschw32 libschw.a* H6 N0 I' H/ A0 R
+endif
: u$ f; X8 h" R+ `6 ]7 {重新弄一份新32位的libschw32库后,重新编译,问题解决。
1 D$ G$ W$ C4 [- b; c3 @+ j1 U V' E |
|