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

sea*_*iao 12 c unix macos

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

Tim*_*Čas 15

在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
Run Code Online (Sandbox Code Playgroud)

(%表示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>
Run Code Online (Sandbox Code Playgroud)

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

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


yve*_*mes 11

objdump 是你的朋友 ;)

$ objdump -f lib/lib.a
Run Code Online (Sandbox Code Playgroud)