Ich versuche mich nebenbei etwas in der Programmierung von
Kerneltreibern (Vanilla Kernel 2.6.23).
Beim Versuch zum Kompilieren fliegen mir die Fehlermeldungen nur
so um die Ohren (Ok, ich verwende alte Beispiele). Wie ich dann per
Google herausgefunden habe reduziert sich die Fehleranzahl sehr stark,
wenn ich linux/autoconf.h mit einbinde.
Vor Jahren als ich noch mit einer Kernelversion 2.2.xx probierte,
musste ich nichts dergleichen einbinden, außer dem Üblichen (init.h und
modules.h).
Liegt das evtl. darin, das ich mir das Makefile so wie in früheren
Zeiten üblich erstellt habe und kein GNUmake, autoconf, etc. verwende,
oder ist hier bei der Installation was schief gelaufen, oder mache
ich hier einen totalen Denkfehler und man muss jetzt linux/autoconf.h
mit einbinden?
Meine Literatur bezieht sich auch noch auf die alten Kernel.
(Was für Literatur - bevorzugt deutsch - könnt ihr mir hier
empfehlen?)
Gruß
Martin
> Liegt das evtl. darin, das ich mir das Makefile so wie in früheren
> Zeiten üblich erstellt habe und kein GNUmake, autoconf, etc. verwende
Autoconf verwendet der Kernel nicht. Aber dieses kbuild ist seit
2.6.x neu!
> oder ist hier bei der Installation was schief gelaufen, oder mache
> ich hier einen totalen Denkfehler und man muss jetzt linux/autoconf.h
> mit einbinden?
>
> Meine Literatur bezieht sich auch noch auf die alten Kernel.
> (Was für Literatur - bevorzugt deutsch - könnt ihr mir hier
> empfehlen?)
Documentation/kbuild/makefiles.txt
http://www.linuxchix.org/content/courses/kernel_hacking/lesson8
Das Beispiel von dort dieser URL läuft hier einwandfrei mit 2.6.28
Allerdings muß
#include <linux/config.h>
durch
#include <linux/autoconf.h>
ersetzt werden.
Ansonsten ist das "Linux Device Drivers" Buch natürlich auch noch
interessant:
http://lwn.net/Kernel/LDD3/
Gruss
Sven
--
"Every time you use Google, you're using a Linux machine"
(Chris DiBona, a programs manager for Google)
/me is giggls@ircnet, http://sven.gegg.us/ on the Web
>> oder ist hier bei der Installation was schief gelaufen, oder mache
>> ich hier einen totalen Denkfehler und man muss jetzt linux/autoconf.h
>> mit einbinden?
>> Meine Literatur bezieht sich auch noch auf die alten Kernel.
>> (Was für Literatur - bevorzugt deutsch - könnt ihr mir hier
>> empfehlen?)
> http://www.linuxchix.org/content/courses/kernel_hacking/lesson8
Gut gemachte Seite. :)
> Das Beispiel von dort dieser URL läuft hier einwandfrei mit 2.6.28
> Allerdings muß
> #include <linux/config.h>
> durch
> #include <linux/autoconf.h>
> ersetzt werden.
Ab wann wurde die Änderung eingeführt?
Die Anleitung wurde wohl mit Kernel 2.6.9 gemacht. Von daher währe
bezüglich dieser Änderung jede Anleitung vor 2.6.10 obsolete.
Oder?
Ein Blick in linux/config.h (viel zu spät passiert) bringt den
aha-Effekt.
/* This file is no longer in use and kept only for backward
* compatibility. autoconf.h is now included via -imacros on
* the commandline
*/
#include <linux/autoconf.h>
Nur, warum greift die include-Zeile da drin nicht?
> Ansonsten ist das "Linux Device Drivers" Buch natürlich auch noch
> interessant:
> http://lwn.net/Kernel/LDD3/
Habe ich hier, allerdings eine wesentlich ältere Ausgabe die noch
keinen 2.6 Kernel kennt.
Allerdings gibt es von der 3.Version noch keine deutsche Ausgabe. :(
Danke für deine Tips.
Martin
>> (Was für Literatur - bevorzugt deutsch - könnt ihr mir hier
>> empfehlen?)
Ich kann Dir http://ezs.kr.hsnr.de/TreiberBuch/html/ empfehlen.
--
H. S.
email: perl -le "print scalar reverse qq/ed.teneerf\100onim.od/"
Hi,
>>> (Was fᅵr Literatur - bevorzugt deutsch - kᅵnnt ihr mir hier
>>> empfehlen?)
> Ich kann Dir http://ezs.kr.hsnr.de/TreiberBuch/html/ empfehlen.
Super, das ist ja besser als ich erhofft hatte.
Vielen Dank fᅵr den Tip.
Gruᅵ
Martin
>> Ich kann Dir http://ezs.kr.hsnr.de/TreiberBuch/html/ empfehlen.
>
> Super, das ist ja besser als ich erhofft hatte.
Das Standardwerk ist eigentlich das hier:
http://lwn.net/Kernel/LDD3/
Gruss
Sven
--
"Ich bin als Abgeordneter nicht dazu da, zu kontrollieren, ob die
Exekutive ihre Arbeit richtig macht" (Thomas Strobl, CDU)