|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
5 }% }+ ?) d* W f2 M/ XARM-linux-gnueabi-readelf工具解决问题 k1 V8 B. Y' S1 r/ y; G2 p
编译一个32位平台的内核时,出现如下错误提示:
) g) C! M1 r l8 G+ l/ ] ~$ K# G
libschw.a: could not read symbols: File format not recognized9 ]0 K% V9 U! K( ^% A, g
3 A. ]8 e1 `9 C0 V/ W" \于是进入相应的目录发现,libschw.a这个文件是存在的,但是为啥编译不过呢,同样的编译在另外一个64位平台却没有这个报错。! i, a [; d6 _3 e" ^
9 W9 d+ o# P0 y8 b9 F7 K
思路:是否与32位64位平台有关?, F8 T' k" ?3 U3 o2 e; ?" v m
使用readelf来查看一下这个库,
: u4 G& J8 q; X* b8 v* m$ arm-linux-gnueabi-readelf -h modules/aw_schw/libschw
0 E7 F! A; W, ]5 c# C1 `% a! o( ^File: modules/aw_schw/libschw(aw_schw_lib.o)
# v, ]/ n' H/ V7 N6 u+ VELF Header:
9 I% Y& d( a4 d' f# v Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 000 {' B7 m2 B) W1 O) ]* M& A& x7 m5 |
Class: ELF64( \. i. T5 H) L& y/ m6 O
Data: 2's complement, little endian M1 M' h% s: H- U7 ~
Version: 1 (current)+ d3 B8 Z/ R; }. p$ N: P) b
OS/ABI: UNIX - System V( U0 s5 l [# |* L# z# ]- H3 g
ABI Version: 0& T( W( ]" d4 O/ x6 k' N7 I
Type: REL (Relocatable file): b9 X5 J& m7 _+ w- S8 W" N
Machine: <unknown>: 0xb74 e& _9 j+ o+ x U
Version: 0x1
% \/ P& G1 A) ? Entry point address: 0x0
8 p6 ]! k7 j: R: D) ~, P8 M. r U Start of program headers: 0 (bytes into file)) f, \- N6 I9 V1 ?5 l* R
Start of section headers: 161192 (bytes into file)+ s+ R/ _: `/ ^- ^
Flags: 0x0
+ M6 u0 ?) t. r Size of this header: 64 (bytes)9 k( E# o; V3 r! v1 A2 Y- v
Size of program headers: 0 (bytes)+ ^1 X7 d) [# I( g. G0 ^2 q' Z
Number of program headers: 0
0 N5 B$ N, w2 g( s! o6 s! C Size of section headers: 64 (bytes)# s6 s P3 S0 ^
Number of section headers: 29/ V) T! M' B# P( O1 N
Section header string table index: 24
% }& ]& x. e5 f: v; m- N果然,这个库显示是64位的,为了兼容32位的,只能修改Makefile,判断到32位时,使用32位的库。
/ P3 s7 A# q8 q- _; b+ifeq ($(LICHEE_ARCH),arm64)
0 k" X' a4 m7 c: H( g* O9 d5 U8 l cp libschw libschw.a. g d) \4 K- R, V
+else6 E) y( T! l# Q$ {2 A) K& s' v
+ cp libschw32 libschw.a8 S$ e( y# _1 B; |5 {+ f/ E
+endif3 ]6 T, ]1 J7 d2 c
重新弄一份新32位的libschw32库后,重新编译,问题解决。
) G; T# W4 P( E! L I' M4 z( [ |
|