2010-12-07 6 views
1

は私が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 
  • は「キャップ」欄の意味は何ですか?
  • キャップの列が異なると、リンクエラーが発生しますか?

答えて

2

どこにも文書化されていないようです。しかし、オープンソースのおかげで、otoolsのソースコードで答えが得られました。もっと情報が必要な場合は、そこを見ることができます。

このフィールドは、CPUの能力ビット(つまり、cpusubtype & CPU_SUBTYPE_MASK)を表します。したがって、実際には、cpusubtypeフィールドのサブセットであり、その情報をより容易に利用できるようにするためだと思います。これはotoolsプログラマーが置かれたものであり、Mach-Oヘッダーの一部ではありません。


キャップ列が障害を結ぶ異なる 原因であるのでしょうか?

ここにあなたの質問がありましたら、正確にリンクしてください。異なるプロセッサー用にコンパイルされた2つのライブラリー(異なる「大文字」フィールドを持つ可能性があります)を作成し、それらを一緒にリンクしようとすると明らかに問題になることがあります。しかし、私はその点で "cputype"分野にもっと関心を持っています。おそらく、もしあなたがx86コードをARMコードとリンクしているならば、ヒントを与えるでしょう( "caps"フィールドよりも、私は推測します)。

一般的に、あなたの特定の状況が要求しない限り、誰も何の書類でも気にすることができない分野に集中しすぎません。

+0

ありがとうございます!それは名前も意味をなさない。 – James