Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Kext (Kernel Extension) :: Fehler beim kompilieren

Kext (Kernel Extension) :: Fehler beim kompilieren

Zetaline
Zetaline06.12.0917:25
Ich habe mir ein wenig source code von:



geladen und versucht zu kompilieren.

Jedoch kommen viele Fehler beim kompilieren, obwohl ich gar nichts verändert habe.
Der Debugger sagt mir z.B. oft:
'FYBABVZAFD' was not declared in this scope

An anderer Stelle im Internet las ich, dass ich wohl irgendetwas vergessen hätte in #include oder OSBundleLibrary zu setzen. ABER ich habe doch gar nichts verändert, trotzdem bekomme ich jede Menge Fehler.

Ihr könnt ja mal selber probieren. Ist glaube ich auch egal was.
Ich hatte es mit: IOUSBFamily-385.4.1 probiert.


Wie kommt das?

Ich nutze das aktuellste OS und XCode Version.
„Auf der Verpackung stand: Erfordert IBM kompatiblen PC mit Windows oder besser. Also entschied ich mich für Mac + OS X = ♥“
0

Kommentare

Zetaline
Zetaline07.12.0915:08
Keiner eine Idee?
„Auf der Verpackung stand: Erfordert IBM kompatiblen PC mit Windows oder besser. Also entschied ich mich für Mac + OS X = ♥“
0
der_flo07.12.0916:08
der Quellcode, der unter http://www.opensource.apple.com veröffentlich wird, ist nicht für Anfänger gedacht.
Auf diesen Seiten werden Quellcode-Fragmente bereit gestellt, keine kompletten Programme.

Wie du schon geschrieben hast, es fehlt im Header ein #include
0
Marcel Bresink07.12.0916:20
An anderer Stelle im Internet las ich, dass ich wohl irgendetwas vergessen hätte in #include oder OSBundleLibrary zu setzen. ABER ich habe doch gar nichts verändert, trotzdem bekomme ich jede Menge Fehler.

Ja, WEIL Du nichts verändert hast, bekommst Du jede Menge Fehler.

Die normale Entwicklungsumgebung von Mac OS X ist dazu ausgelegt, Programme im "Userland" oder Kexts mit offiziellen Kernel-APIs zu übersetzen. Wenn Du aber Teile des Kernels selbst kompilieren willst, dann reichen diese Schnittstellen nicht aus. Der Kernel und einige Kexts sind aus zahlreichen Modulen zusammengesetzt und verwenden intern natürlich private Schnittstellen, die "normalen" Programmen und Kexts nicht zur Verfügung stehen.

Um dieses Problem zu lösen, musst Du entweder selbst mit viel Sachkenntnis die includes ändern und Dir Header aus anderen Modulen besorgen, ODER Du richtest Dir mit dem Programm "Darwinbuild" vorher eine komplette Kernel-Kompilationsumgebung ein. Damit können die benötigten Header-Files erzeugt und die Umgebungsvariablen so eingestellt werden, dass der Compiler die richtigen Pfade findet.

Zum Einarbeiten in Darwinbuild für Snow Leopard ist dieses Dokument geeignet:

Darwinbuild kann man hier herunterladen:

Wenn es dann immer noch nicht klappt, kann es sein, dass Apple vergessen hat, die Quellen bestimmter benötigter Module zu veröffentlichen. In manchen Fällen ist das auch Absicht, da der Kernel an ein paar Stellen "zensiert" ist, um bestimmte Firmengeheimnisse nicht zu verraten.
0
Zetaline
Zetaline07.12.0917:24
Danke ihr beiden!

Besonders an @@Marcel Bresink


So viel Sachkenntnis besitze ich wahrlich nicht im geringsten.

Darwinbuild für Snow Leopard also...
Ui, ui, ui
Die Sache fängt mir über den Kopf zu wachsen.

Vielen Dank, für all die Informationen.
„Auf der Verpackung stand: Erfordert IBM kompatiblen PC mit Windows oder besser. Also entschied ich mich für Mac + OS X = ♥“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.