您的位置:首页 > 运维架构 > 网站架构

如何判断一个静态库(.a文件)所支持的架构(平台)

2011-10-14 10:37 525 查看
问:


How
do I determine the target architecture of static library (.a) on Mac OS X?

I'm interested in verifying if a given iPhone static library has been built for ARM or Intel.

Its more curiosity than anything. Is there some kind of Mac OS X or BSD specific tool to do this? Thispost gives
an example in Linux.

方法1:

file
will
probably tell you.
otool
certainly
should be able to. But I'd try
file
first,
e.g.
logan:/Users/logan% file d2
d2: Mach-O executable ppc


Example with archive:
logan:/Users/logan% file /usr/lib/libMallocDebug.a
/usr/lib/libMallocDebug.a: Mach-O universal binary with 2 architectures
/usr/lib/libMallocDebug.a (for architecture i386):      current ar archive random library
/usr/lib/libMallocDebug.a (for architecture ppc):       current ar archive


方法2:

Another option is
lipo
,
it's output is brief and more readable that
otool
's.

Example:
% lipo -info /usr/lib/libiodbc.a
Architectures in the fat file: /usr/lib/libiodbc.a are: x86_64 i386 ppc
% lipo -info libnonfatarchive.a
input file libnonfatarchive.a is not a fat file
Non-fat file: libnonfatarchive.a is architecture: i386
%


方法3:

As mentioned earlier,
file
does
not always work.
otool
-hv
is probably the closest thing that is guaranteed to work - it gives architecture information for every single object file in the library.

Example:
% otool -hv /sw/lib/libfftw3.a
Archive : /sw/lib/libfftw3.a
/sw/lib/libfftw3.a(align.o):
Mach header
magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64  X86_64        ALL  0x00      OBJECT     3        336 SUBSECTIONS_VIA_SYMBOLS
/sw/lib/libfftw3.a(alloc.o):
Mach header
magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
MH_MAGIC_64  X86_64        ALL  0x00      OBJECT     3        416 SUBSECTIONS_VIA_SYMBOLS
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: