如何查看静态库文件的编译平台

时间:2012-02-13 13:00:26

标签: c macos unix

我有一个静态库文件。如何查看它是在i386中还是在arm平台中编译的。感谢。

4 个答案:

答案 0 :(得分:14)

在Unix(以及类似的 - 比如Linux或Minix)系统中,您可以使用“文件”实用程序:

%file /lib/libc.so.7
libc.so.7: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, stripped

%表示shell提示符,不是命令的一部分)

对于Windows,我不知道是否已存在内置命令,但如果没有,您可以在此页面上找到该实用程序:http://gnuwin32.sourceforge.net/packages.htmlfile包是约1/3页面。)

编辑:对于静态库(.a文件),首先需要提取它们并检查.o文件:

%cp /usr/lib/libchipmunk.a .
%ar -x libchipmunk.a
%file *.o
chipmunk.c.o: ELF 64-bit LSB relocatable, x86-64, version 1 (FreeBSD), not stripped
<snip>

警告: ar -x ...会污染本地目录,因此请务必先将文件复制到其他位置(比如/tmp/something)! < / p>

我确信有一种方法可以直接检查这些文件,但这也很有效!

答案 1 :(得分:8)

objdump是你的朋友;)

$ objdump -f lib/lib.a

答案 2 :(得分:0)

file为您提供有关Linux平台的一般信息。

e.g。

file /usr/lib/libfoo.a

或可执行二进制文件

file `which foo`

答案 3 :(得分:0)

使用fileobjdumpfile始终有效,但objdump会为您提供有关库,档案和可执行文件的更多详细信息。