我用ARM7为cMake构建了一些静态库。通常,当您对.a文件使用next命令时,它将显示体系结构:
f.e.
mac:libs User$ file ./libcurl.a
./libcurl.a: Mach-O universal binary with 3 architectures
./libcurl.a (for architecture armv6): current ar archive random library
./libcurl.a (for architecture armv7): current ar archive random library
./libcurl.a (for architecture i386): current ar archive random library或者f.e。
mac:libs User$ otool -vf ./libboost_regex.a
Fat headers
fat_magic FAT_MAGIC
nfat_arch 3
architecture armv6
cputype CPU_TYPE_ARM
cpusubtype CPU_SUBTYPE_ARM_V6
capabilities 0x0
offset 68
size 9550024
align 2^2 (4)
architecture armv7
cputype CPU_TYPE_ARM
cpusubtype CPU_SUBTYPE_ARM_V7
capabilities 0x0
offset 9550092
size 9390544
align 2^2 (4)
architecture i386
cputype CPU_TYPE_I386
cpusubtype CPU_SUBTYPE_I386_ALL
capabilities 0x0
offset 18940636
size 9595040
align 2^2 (4)但是现在,当我构建我的图书馆时,"otool“和"file”无法显示它的体系结构。
mac:libs User$ otool -vf ./mylib_meta.a
Archive : ./mylib_meta.a什么意思?我在建图书馆的时候能犯什么错误?
更新:伊戈尔,谢谢!
我使用命令解压缩了对象文件:
ar -t mylib.a
-xv mylib.a myobj.o
-t显示二进制文件的列表。
-xv提取具体的二进制文件
发布于 2013-07-04 11:43:33
苹果使用两种形式的AR档案。第一个文件非常类似于传统的Unix存档("a.out归档“)--基本上只是一堆.o文件与前面的符号索引粘在一起:
"<!arch>\n"
header 0
SYMDEF entry
header 1
object 1
header 2
object 2
...要确定此存档所针对的体系结构,需要至少提取一个对象文件并在其上使用file或otool。存档头本身不具有此信息。(实际上,对象文件不一定都是同一个拱,理论上您可能有任何类型的文件,不仅仅是对象,但这是不可能的。)您可以使用 utility从存档中提取单个文件。
另一种是苹果自己的发明。他们采取了“脂肪二进制/通用二进制”的概念,用于多拱马赫-O可执行文件,并使用它作为档案。因此,“胖”档案如下所示:
Fat Mach-O header
Architecture 1 header --+
Architecture 2 header --|--+
Architecture 3 header --|--|--+
[padding] | | |
Archive 1 <-------------+ | |
Archive 2 <----------------+ |
Archive 3 <-------------------+在本例中,file和otool可以查看胖标头和支持哪些体系结构的列表。
要创建或编辑fat文件(档案和可执行文件),可以使用 tool。
发布于 2019-01-13 21:53:16
另一种选择是使用alternative包中的objdump (例如,通过自制)。在macOS上,它被重新命名为gobjdump。在归档文件上调用它将显示存档头信息,也许可以省去提取对象文件的麻烦(就像您最初想要的那样)。
> gobjdump -a ./libboost_regex.a
In archive ./libboost_regex.a:
c_regex_traits.o: file format mach-o-x86-64
rw-r--r-- 502/20 140976 Nov 8 08:03 2018 c_regex_traits.o
cpp_regex_traits.o: file format mach-o-x86-64
rw-r--r-- 502/20 106424 Nov 8 08:03 2018 cpp_regex_traits.o
...迟答,但在这里添加,供以后参考。
https://stackoverflow.com/questions/17468468
复制相似问题