【问题标题】:Meaning of otool "caps" fieldotool“大写”字段的含义
【发布时间】:2010-12-07 22:43:26
【问题描述】:

当我运行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”列是什么意思?
  • caps 列不同会导致链接失败吗?

【问题讨论】:

    标签: macos linker otool


    【解决方案1】:

    好问题。似乎没有任何地方记录。不过,由于开源,答案在 otools 的源代码中提供,因此如果您需要更多信息,可以查看那里。

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


    大写列会有所不同吗 导致链接失败?

    不确定我是否在这里收到您的问题,具体链接什么?显然,为不同的处理器编译两个库(因此可能具有不同的“caps”字段)并尝试将它们链接在一起可能是一个问题。不过,在这方面,我会更关心“cputype”字段。如果您将 x86 代码与 ARM 代码链接起来,它可能会给您一个提示(我猜比“caps”字段更重要)。

    一般来说,除非您的特殊情况需要,否则我不会过多关注任何文档中甚至没人愿意提及的领域。

    【讨论】:

    • 谢谢!这也让这个名字有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2021-10-12
    • 2012-08-12
    相关资源
    最近更新 更多