zoukankan      html  css  js  c++  java
  • could not read symbols: File format not recognized

    arm-linux-gnueabi-readelf工具解决问题

    编译一个32位平台的内核时,出现如下错误提示:

    libschw.a: could not read symbols: File format not recognized

    于是进入相应的目录发现,libschw.a这个文件是存在的,但是为啥编译不过呢,同样的编译在另外一个64位平台却没有这个报错。

    思路:是否与32位64位平台有关?

    使用readelf来查看一下这个库,

    $ 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库后,重新编译,问题解决。

  • 相关阅读:
    将html转换成image图片png格式
    maven 发布打包部署 命令
    javap 指令集
    国内maven仓库地址
    五行大义
    oracle
    【Centos linux系统】命令行(静默)安装oracle 11gR2
    windows安装mysql-5.7压缩版详细教程
    k8s入门系列之扩展组件(一)DNS安装篇
    k8s入门系列之集群安装篇
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167900.html
Copyright © 2011-2022 走看看