首页 > 解决方案 > 由于链接错误 __antimain 和 __realmain 未加载内核扩展

问题描述

我有一个使用 Xcode 9.4.1 编译的内核扩展(kext),它运行良好。因此,我能够在 HighSierra 机器上禁用 SIP 的情况下加载它。现在我更新到 Mojave 和 Xcode。所以我用 Xcode 10 重新编译了它,效果很好。但是,当我像以前一样加载 kext 时kextutuil,但在 Mojave(禁用 SIP)上,它由于链接错误而失败。我收到以下错误:

(kernel) Allocated link buffer for kext org.mydriver.kext at 0xffffff7f9753b000 (81920 bytes).
(kernel) kxld[org.mydriver.kext]: The following symbols are unresolved for this kext:
(kernel) kxld[org.mydriver.kext]:   __antimain
(kernel) kxld[org.mydriver.kext]:   __realmain
(kernel) Can't load kext org.mydriver.kext - link failed.
(kernel) Failed to load executable for kext org.mydriver.kext.
(kernel) Kext org.mydriver.kext failed to load (0xdc008016).
(kernel) Failed to load kext org.mydriver.kext (error 0xdc008016).
(kernel) Kext org.mydriver.kext removing all personalities naming it from the IOCatalogue.
Kernel error handling kext request - (libkern/kext) link error.
Failed to load /tmp/mydriver.kext - (libkern/kext) link error.
Failed to load /tmp/mydriver.kext - (libkern/kext) link error.

注意:必须禁用 SIP,因为我只需在测试机器上加载它。有没有人有提示或知道如何调整以使其加载?

标签: xcodemacos-mojavekernel-extension

解决方案


推荐阅读