質問

走るとき 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列は異なるため、障害をリンクする原因になりますか?
役に立ちましたか?

解決

良い質問。どこにも文書化されていないようです。ただし、Open-Sourceのおかげで、回答はOtoolsのソースコードで入手できたため、詳細情報が必要な場合はそこを見ることができます。

フィールドは、CPUの機能ビットを表します(つまり cpusubtype & CPU_SUBTYPE_MASK)。そのため、その情報をより簡単に利用できるようにするために、実際にはCPusubtypeフィールドのサブセットです。これは、Otoolsプログラマーが入れたものであり、Mach-Oヘッダーの一部ではありません。


Caps列は異なるため、障害をリンクする原因になりますか?

ここであなたの質問があるかどうかはわかりませんが、何をリンクしていますか?さまざまなプロセッサ用にコンパイルされた2つのライブラリ(したがって、おそらく異なる「キャップ」フィールドを使用して)を使用して、それらを一緒にリンクしようとするのは問題になるかもしれません。ただし、その点で「Cputype」フィールドにもっと関心があります。 X86コードをARMコードとリンクする場合、おそらくヒントを与えるでしょう(「キャップ」フィールドよりも多く、推測します)。

一般的に、私はあなたの特定の状況がそれを要求しない限り、誰もどんなドキュメントでも言及することさえ気にしない分野にあまり集中することはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top