Hallo, On Thu, 22 May 2003, Peter Lipp wrote:
Am Donnerstag, 22. Mai 2003 20:56 schrieb Thomas Hertweck:
Der Link /usr/src/linux, falls er besteht, sollte uebri- gens immer auf die Quellen des momentan laufenden Kernels zeigen.
Walum?
Dalum! Im Ernst: es gibt diverse Leute (AFAIR u.a. Linus) die das Gegenteil sagen. Das ganze haengt dann noch obendrein davon ab, ob /usr/include/linux ein symlink auf /usr/src/linux/include/linux ist oder ein Verzeichnis mit den Kernel-Headern, gegen die die installierte glibc gelinkt wurde. Kurzfassung: Probleme bekommst du bei Inkompatibilitaeten in allen Varianten, der Unterschied ist, _wann_ du die Probleme bekommst/bemerkst. Bei der Variante, dass /usr/include/linux ein symlink ist und in /usr/src/linux der aktuelle Kernel liegt bekommst du evtl. Probleme frueher mit als bei den anderen Varianten. Jedenfalls: jede Variante hat Vorzuege und Nachteile. Und deswegen ziehe ich (und offenbar auch Thomson) diese Variante vor. Du bekommst Fehlermeldungen i.d.R. spaetestens beim linken, und nicht erst, wenn du ein Programm starten willst usw... Ich bin bisher jedenfalls immer gut mit der symlink-Variante gefahren, d.h.: /usr/src/linux -> /usr/src/linux-`uname -r` /usr/include/linux -> /usr/src/linux/include/linux z.B.: Meine glibc-2.1.3 wurde IIRC gegen den SuSE-Kernel 2.2.10 der SuSE 6.2[1] gelinkt, aktuell laeuft 2.4.16-3 und eben dieser liegt auch in /usr/src/linux. Probleme: keine relevanten. Die Probleme die Auftauchen sind dergestalt, dass sich a) alte Programme nicht mehr neu kompilieren lassen oder b) alte Programme nicht mehr laufen, weil sich der Kerneltreiber geaendert hat. Letzteres hatte ich neulich mit 'kcmjoy', das war gegen Kernel 2.2.10 kompiliert, aber diese Schnittschelle gibt's in meinem Kernel nicht mehr. Ich bekam also ein "no devices detected". Ich hab mir dann das (alte! KDE1) kcmjoy src.rpm geschnappt, den mitgelieferten (alten) joystick-Treiber geloescht und *tada*, das Teil liess sich auch gegen den neuen Treiber kompilieren und das Proggie laeuft auch ;) Ja, und was waere gewesen, wenn ich in /usr/include/linux noch die Linux-Header gehabt haette, gegen die die glibc kompiliert wurde, wie u.a. eben von Linus gefordert? Nun, dann waere kcmjoy wieder gegen diese Header kompiliert worden und haette immer noch nicht funktioniert -- auch wenn es "sauber" durchkompiliert haette, denn diese Header haetten die alte, bei mir nicht mehr vorhandene Schnittstelle deklariert. Fazit: s.o. und ich denke eben einfach, dass wenn man etwas kompiliert, dass Kernel-Header einbindet, dann sollte man auch die Header verwenden, die der aktuellen Realitaet (d.h. dem laufenden Kernel) entsprechen. Diese Problematik betrifft aber i.d.R. nur die, bei denen der Altersunterschied zwischen Kernel und der glibc und den Programmen signifikant ist. Wenn das bei dir (wie bei den meisten) nicht der Fall ist, dann wirst du in der Praxis keine Unterschiede merken. Wer aber z.B. inzwischen mit 2.5er Kernels spielt (oder dann irgendwann auf den 2.6er updated, ohne die Distri zu aktualisieren), der wird mit diesem Thema wohl Bekanntschaft machen. -dnh [1] Oder gegen den SuSE 2.2.12 der 6.3/6.4 ich bin mir nicht ganz sicher, da ich die glibc von 2.1.2 auf 2.1.3 aktualisiert habe. -- 172: Internet Das längste Kabel der Welt. (Lutz Frommberger)