Xcode: Link 内核框架到内核扩展?

Xcode: Link kernel framework to kernel extension?

我正在尝试编写使用内核框架某些部分的内核扩展 (kext)。

我将 Kernel.framework 添加到目标设置中的框架和库列表中。

然而,当我尝试构建我的 kext 并且 link 反对它时,Xcode 拒绝这样做并声称无法找到框架,即使它已经出现在可用框架列表。

我做错了吗?是不是连kexts都不能用这个框架?

编辑:我知道用户 space 可以替代 kexts,但这些不能满足我的需求。

Kernel.framework 是一个 header-only“框架”。 Kext linking 与用户 space 可执行文件 linking 根本不同,因为没有 dyld。您不需要在构建时针对任何库 link,但您必须在 Info.plist 文件的 OSBundleLibraries 字典中将 KPI 指定为 link。

您可以使用以下命令生成该词典的草稿:

kextlibs -xml -c path/to/your.kext

如果使用任何不受支持的 KPI,您还需要指定 -unsupported。如果它抱怨找不到符号,添加 -undef-symbols 选项将有助于调试。