Linux 如何获得“.a”文件的架构?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/3740379/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How can I get the architecture of a '.a' file?
提问by Mike
I have a .a file from which I want to get architecture information. Running file myFile.a
results in file.a: current ar archive
. How can I get more information on what architecture the file contains?
我有一个 .a 文件,我想从中获取架构信息。运行file myFile.a
结果在file.a: current ar archive
. 如何获取有关文件包含的架构的更多信息?
采纳答案by eldarerathis
You can also skip the ar
command and use readelf, via something like:
您还可以跳过ar
命令并使用readelf,通过以下方式:
readelf -h <archive>.a | grep 'Class\|File\|Machine'
readelf -h <archive>.a | grep 'Class\|File\|Machine'
[00:32:15] /usr/lib $ readelf -h libxslt.a | grep 'Class\|File\|Machine'
File: libxslt.a(attrvt.o)
Class: ELF32
Machine: Intel 80386
File: libxslt.a(xslt.o)
Class: ELF32
Machine: Intel 80386
... #Trimmed this, it goes on a bit
File: libxslt.a(transform.o)
Class: ELF32
Machine: Intel 80386
File: libxslt.a(security.o)
Class: ELF32
Machine: Intel 80386
[00:32:24] /usr/lib $
In case it's relevant, here's the other information that you can get from readelf -h
. I just trimmed the above with grep
, obviously:
如果相关,您可以从这里获取其他信息readelf -h
。我只是用 修剪了上面的内容grep
,显然:
File: libxslt.a(security.o)
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: REL (Relocatable file)
Machine: Intel 80386
Version: 0x1
Entry point address: 0x0
Start of program headers: 0 (bytes into file)
Start of section headers: 2548 (bytes into file)
Flags: 0x0
Size of this header: 52 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 40 (bytes)
Number of section headers: 16
Section header string table index: 13
That output is for oneof the object files in libxslt.a
, but it gives the same information for each file.
这是输出为一个在目标文件libxslt.a
,但它给每个文件相同的信息。
回答by msw
extract the object files from the archive and inspect them with file(1), nm(1), etc.
从存档中提取目标文件并使用 file(1)、nm(1) 等检查它们。
回答by Matthew Flaschen
objdump
is another option:
objdump
是另一种选择:
objdump -a file.a|grep 'file format'
回答by pcbabu
Use
用
lipo -info libExample.a
lipo -info libExample.a
It will Who the architecture it build for. Other functions like otool or file doesn't give the exact answer and sometimes it to verbose to get the correct information.
它将为谁构建它的架构。otool 或 file 等其他函数没有给出确切的答案,有时它会很冗长以获取正确的信息。
回答by Naseef Ur Rahman
I would suggest using objdump instead of lipo. objdump provides detailed information than lipo.
我建议使用 objdump 而不是 lipo。objdump 提供了比 lipo 更详细的信息。