我正在尝试编写使用内核框架某些部分的内核扩展(kext)。
我在目标设置的框架和库列表中添加了Kernel.framework。
但是,当我尝试构建我的kext并与其链接时,Xcode拒绝这样做,并声称无法找到该框架,即使该框架已显示在可用框架列表中。
我做错了吗?即使对于kexts也无法使用此框架吗?
编辑:我知道kexts的用户空间替代方案,但这些不能满足我的需求。
答案 0 :(得分:0)
Kernel.framework
是仅标头的“框架”。 Kext链接与用户空间可执行链接从根本上不同,因为没有dyld
。您无需在构建时链接任何库,但必须在Info.plist
文件的OSBundleLibraries
字典中指定要链接的KPI。
您可以使用以下命令生成此词典的草稿:
kextlibs -xml -c path/to/your.kext
如果使用任何不受支持的KPI,您还需要指定-unsupported
。如果它抱怨找不到符号,则添加-undef-symbols
选项将有助于调试。