我有一个静态库文件。如何查看它是在i386中还是在arm平台中编译的。感谢。
答案 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.html(file
包是约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)
使用file
或objdump
。 file
始终有效,但objdump
会为您提供有关库,档案和可执行文件的更多详细信息。