当前位置: 移动技术网 > 网络运营>服务器>Linux > 查看Linux下库的信息

查看Linux下库的信息

2020年07月26日  | 移动技术网网络运营  | 我要评论

(请保留-> 作者: 罗冰   https://blog.csdn.net/luobing4365)

最近在研究USB key的使用,涉及到各种CPU架构的支持。厂家提供的资料,相当的粗糙,有X86的、Arm64的和MIPS的。库名都一样,压根搞不清对应关系。

在朋友的指点下,查了下Linux下对文件信息的解析方法。我觉得还是比较简单实用的,在此把操作过程记录下来。

查看文件信息,可以使用file和objdump命令,后一个命令的功能相对丰富些,两者可配合使用。

1 objdump命令

其主要功能如下:

可以使用objdump查看库文件的组成:

robin@robin-virtual-machine:~ /yinhe$ objdump -a libRockeyARM.a

In archive libRockeyARM.a:
rc4.o:     file format elf64-littl
rw-r--r-- 0/0   1672 Jan  1 08:00 1970 rc4.o

des.o:     file format elf64-little
rw-r--r-- 0/0   4656 Jan  1 08:00 1970 des.o
(下略)

objdump命令可以用来查看符号表,各种函数、对外部库的引用等,是一个不错的辅助工具。不过,对于库支持哪个CPU架构,它好像没法探查出来。

2 file命令

file命令的语法相对简单些,其功能如下:

robin@robin-virtual-machine:~/ yinhe$ file

Usage: file [-bcEhikLlNnprsvzZ0] [--apple] [--extension] [--mime-encoding] [--mime-type]

            [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...

       file -C [-m magicfiles]

       file [--help]

不过,由于我使用的库经过压缩,直接去读,是看不出什么信息的:

$ file libRockeyARM.a

libRockeyARM.a: current ar archive

 

首先应该使用ar命令,将库解压,然后再去查看文件信息。

$ ls

libRockeyARM.a

$ ar -x libRockeyARM.a

$ ls

ccid.o  descriptors.o  des.o  Dongle_API.o  Dongle_CORE.o  error.o  libRockeyARM.a  linux.o  md5.o  mysha1.o  rc4.o  rsa.o  usb.o

可以看出,库文件解压出很多obj文件。我的目标是查看库所支持的cpu架构,查看其中的任意一个文件,即可得到所需要的信息:

$ file ccid.o

ccid.o: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), not stripped

这个库是由厂家提供的,在银河麒麟的包中,从中可以看出,它是支持ARM64位的。

而在中标麒麟的包中,这个库是支持MIPS的,当然就是龙芯的CPU了:

$ file ccid.o

ccid.o: ELF 64-bit LSB relocatable, MIPS, MIPS64 rel2 version 1 (SYSV), not stripped

windows下也可以使用这些gnu的工具,网址:

不过,objdump好像没有包含在内。Windows下查看obj文件的工具,名字为dumpbin,包含在每个VS的开发工具中,其功能也很强大,在UEFI开发探索26 中,曾经使用过它。

本文地址:https://blog.csdn.net/luobing4365/article/details/107577136

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网