Значение поля Otool «Caps»
Вопрос
Когда я бегу 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»).
В целом, я бы не стал сосредоточиться на области, которую никто даже не заботится в какой -либо документации, если только ваша конкретная ситуация не требует этого.