【发布时间】:2012-03-04 21:07:23
【问题描述】:
我有一个静态库文件。如何查看它是在i386还是在arm平台编译的。谢谢。
【问题讨论】:
-
看看我的回答——很多人都不知道(尽管作为程序员的你可能知道)Mac OS X 是一个成熟的 Unix 系统 :)
我有一个静态库文件。如何查看它是在i386还是在arm平台编译的。谢谢。
【问题讨论】:
objdump 是你的朋友 ;)
$ objdump -f lib/lib.a
【讨论】:
file。
在 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)!
我确信有一种方法可以直接检查这些文件,但这也同样有效!
【讨论】:
使用file 或objdump。 file 始终有效,但 objdump 将为您提供有关库、档案和可执行文件的更详细信息。
【讨论】:
file 为您提供有关 linux 平台的一般信息。
例如
file /usr/lib/libfoo.a
或者对于一个可执行的二进制文件
file `which foo`
【讨论】: