PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschiedene linux include Dateien



stefan-tiger
28.12.05, 06:28
Hallo,

durch mein Problem mit dem Cisco VPN-Client bin ich auf etwas gestoßen was ich nicht verstehe.

Ich habe die linux-header an Zwei stellen liegen, jedoch liegen an diesen Stellen unterschiedliche Versionen wie man durch die Dateigröße und durch "diff" rausfinden kann.

Ein Beispiel:

diff /usr/include/linux/skbuff.h /usr/src/linux/include/linux/skbuff.h

1.) Warum ist das so?
2.) Welcher Header wird bei #include <linux/skbuff.h> benutzt?

xanlosch
28.12.05, 07:55
In /usr/include liegen die Kernel-Header Dateien mit denen deine GlibC hoffentlich gebaut ist. In /usr/src/linux/include liegen die aktuellen Header Dateien des Kernels. Die beiden müssen nicht gleich sein. Was ebenfalls nicht empfohlen wird - lauf LFS-Erfahrung bei mir selber - dass man immer auf die aktuellen Kernel Header Dateien "verlinkt".

Welche Header Dateien genutzt werden, hängt davon ab, ob ein "-I/usr/src/linux" beim GCC-Aufruf dabei steht oder nicht. Steht dies dabei, dann werden die des aktuellen Kernels genommen - sonst halt die aus /usr/include, da der letzter Pfad im Standard-Suchpfad des GCC steht.

stefan-tiger
28.12.05, 08:45
OK, das erklärt warum soviele Programme den Pfad der aktuellen Kernel-Quellen benötigen.

xanlosch
28.12.05, 09:31
Eigentlich brauchen es nur die Programme, die Kernel-Module bauen wollen. Alle anderen sollten ohne die aktuellen Kernel Header Dateien arbeiten, da es sonst zu Problemen mit der GlibC kommen kann.

Frag mich bitte nicht nach den genauen Details, aber es war ne sehr lange Diskussion dazu schon mal auf der LFS-Entwickler-Liste.