1

私はkextlibs自分の kext に対して実行しましたが、使用するように指示されました:

com.apple.kpi.bsd = 12.2
com.apple.kpi.libkern = 12.2

これは私の開発マシン (10.8) で問題なく動作します。しかし、別のマシン(10.7を実行)で実行すると、次のようにロードされません。

Dependency Resolution Failures: 
Only incompatible kexts found for these libraries: 
    com.apple.kpi.bsd
    com.apple.kpi.libkern

ある範囲の Mac OS バージョン (10.6 から 10.8) をターゲットにしたい場合、リンクするバージョンをどのように判断すればよいですか?

4

1 に答える 1

4

KPI「バンドル」(com.apple.kpi.*) は、カーネルの Darwin バージョン番号によってバージョン管理されます。

  • ダーウィンのメジャー番号は、OSX のマイナー番号に 4 を加えたものです。したがって、OSX 10.8 はダーウィン 12、10.7 は 11、10.6 は 10 などです (これは、少なくとも OSX 10.4 に戻ると当てはまります。10.3 の経験はありません)。またはそれ以上)
  • Darwin マイナー番号は OSX リビジョン番号です。したがって、OSX 10.8.2 は Darwin 12.2、OSX 10.6.8 は Darwin 10.8、OSX 10.7 は Darwin 11.0 などです (OSX/macOS リビジョンは、複数の Darwin マイナー バージョンによって増分されることがあります。たとえば、macOS 10.14.1Darwin 18.2 .0.)

IOKit ファミリ (IOPCIFamily、IOStorageFamily など) には、独自のバージョン管理スキームがあります。これらを処理する方法は、サポートする最も古い OSX バージョンの関連する kext (IOPCIFamily.kext、IOStorageFamily.kext など) の Info.plist でバンドル バージョン (CFBundleVersion) プロパティを調べることです。または、その OS バージョンの実行中に kextlibs を実行するだけです。kextlibs は、実行中の OSX バージョンの kext/kpi バージョン番号を常に出力します。

于 2013-01-18T10:51:28.113 に答える