当我运行otool -favh some/library.so
时,会出现以下字段:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 X86_64 ALL LIB64 EXECUTE 12 1552 NOUNDEFS DYLDLINK TWOLEVEL
答案 0 :(得分:3)
好问题。似乎没有在任何地方记录。但是,感谢开源,otools的源代码中提供了答案,因此如果您需要更多信息,可以查看。
该字段表示CPU的能力位(即cpusubtype & CPU_SUBTYPE_MASK
)。因此,我认为它实际上是cpusubtype字段的一个子集,以使这些信息更容易获得。这是otools程序员所放入的东西,而不是Mach-O头部的一部分。
大写字母列是不同的 导致链接失败?
不确定我是否在这里提出您的问题,确切地说是什么?有两个库为不同的处理器编译(因此可能具有不同的“大写”字段)并试图将它们链接在一起可能是一个问题,显然。不过,我会更关注这方面的“cputype”字段。如果你将x86代码与ARM代码链接起来,它可能会给你一个提示(比我猜的“cap”字段更多)。
总的来说,除非你的特殊情况需要,否则我不会过分关注任何文档中甚至没有人会提及的字段。