找回密码
 注册
关于网站域名变更的通知
查看: 295|回复: 1
打印 上一主题 下一主题

could not read symbols: File format not recognized

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-4-16 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2020-4-16 18:58 | 只看该作者
could not read symbols: File format not recognized
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-1 12:06 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表