Расширение ядра не загружено из-за ошибки связывания __antimain и __realmain

#xcode #macos-mojave #kernel-extension

#xcode #macos-mojave #расширение ядра

Вопрос:

У меня есть расширение ядра (kext), которое я скомпилировал с помощью Xcode 9.4.1, оно отлично работало. Таким образом, я смог загрузить его с отключенным SIP на компьютере HighSierra. Теперь я обновился до 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 был отключен, поскольку мне нужно загрузить его только на тестовую машину. У кого-нибудь есть подсказка или он знает, что настроить, чтобы оно загружалось?

Комментарии:

1. Получаете ли вы какие-либо предупреждения во время сборки и компоновки вашего kext? Отсутствующие символы — это функции запуска и остановки по умолчанию, которые должны быть в библиотеке kext в macOS SDK, которая по умолчанию связана с вашим kext.

2. Да, но на самом деле ничего не связано (две устаревшие проблемы, которые у меня были раньше). Я также установил «Процедуру запуска / остановки модуля». Но, по-видимому, теперь я могу установить любое значение, и компилятор / компоновщик вообще не жалуется. Мне это кажется странным.