Próbuję napisać rozszerzenie jądra (KEXT), który wykorzystuje niektóre części ramek jądra.

Dodałem kernel.framework do listy framework i bibliotek w ustawieniach docelowych.

Jednak, gdy próbuję zbudować Kext i link przeciwko niemu, XCode odmówi tego, a roszczenia nie mogą być w stanie znaleźć ram, mimo że pokazał się na liście dostępnych ram.

Czy robię to źle? Czy nie można korzystać z tych ram nawet dla kexts?

Edytuj: Zdaję sobie sprawę z alternatyw użytkownika Kexts, ale nie spełniają moich potrzeb.

1
Bytopo 19 październik 2020, 00:13

1 odpowiedź

Najlepsza odpowiedź

Kernel.framework jest "ramami" tylko nagłówka ". Łączenie Kext jest zasadniczo różni się w zależności od wykonywalnego połączenia przestrzeni użytkownika, ponieważ nie ma dyld. Nie musisz linkować przeciwko żadnych bibliotek w czasie budowy, ale musisz określić KPI, aby połączyć się przeciwko słowniku {X2}}} {X3}}.

Możesz wygenerować projekt tego słownika za pomocą następującego polecenia:

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

Jeśli używasz żadnych nieobsługiwanych kpis, chcesz również określić -unsupported. Jeśli nie znaleziono narzekania symboli, dodawanie opcji -undef-symbols pomoże w debugowaniu.

0
pmdj 19 październik 2020, 09:02