otool“caps”字段的含义

时间:2010-12-07 22:43:26

标签: macos linker otool

当我运行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
  • “caps”栏的含义是什么?
  • 大写字母列不同会导致链接失败吗?

1 个答案:

答案 0 :(得分:3)

好问题。似乎没有在任何地方记录。但是,感谢开源,otools的源代码中提供了答案,因此如果您需要更多信息,可以查看。

该字段表示CPU的能力位(即cpusubtype & CPU_SUBTYPE_MASK)。因此,我认为它实际上是cpusubtype字段的一个子集,以使这些信息更容易获得。这是otools程序员所放入的东西,而不是Mach-O头部的一部分。


  

大写字母列是不同的   导致链接失败?

不确定我是否在这里提出您的问题,确切地说是什么?有两个库为不同的处理器编译(因此可能具有不同的“大写”字段)并试图将它们链接在一起可能是一个问题,显然。不过,我会更关注这方面的“cputype”字段。如果你将x86代码与ARM代码链接起来,它可能会给你一个提示(比我猜的“cap”字段更多)。

总的来说,除非你的特殊情况需要,否则我不会过分关注任何文档中甚至没有人会提及的字段。