Вопрос

Когда я бегу 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 отличаться причиной связывания неудач?
Это было полезно?

Решение

Хороший вопрос. Кажется, нигде не задокументировано. Однако благодаря открытому исходному коду ответ был доступен в исходном коде для Otools, так что вы можете посмотреть там, если вам нужна дополнительная информация.

Поле представляет собой кусочки возможностей процессора (то есть cpusubtype & CPU_SUBTYPE_MASK) Так что, я полагаю, это действительно подмножество поля Cpusubtype, чтобы сделать эту информацию более доступной. Это то, что вложил программист Otools (ы), а не часть заголовка Mach-O.


Будет ли столбец Caps отличаться причиной связывания неудач?

Не уверен, что я получу ваш вопрос здесь, связываю что именно? Очевидно, что наличие двух библиотек, составленных для разных процессоров (возможно, с различными полями «Caps») и попытка связать их вместе, может быть проблемой. Однако в этом отношении я был бы больше обеспокоен полем "cputype". Это, вероятно, даст вам подсказку, если вы связываете код x86 с кодом ARM (я предполагаю, что поле «Caps»).

В целом, я бы не стал сосредоточиться на области, которую никто даже не заботится в какой -либо документации, если только ваша конкретная ситуация не требует этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top