Forum: PC-Programmierung Linux Header inkludieren


von Masl (Gast)


Lesenswert?

Hallo,

ich spiel gerade etwas mit make und gcc herum  (Kubuntu 12.04) und 
wollte für einen Test einen Linux Kernel Header inkludieren, zB 
<linux/module.h>

Ich rufe make auf und erhalten dann leider die Mitteilung dass module.h 
nicht gefunden werden kann.

Ein gcc-Aufruf mit -v -E brachte Klarheit:
1
#include <...> search starts here:
2
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include
3
 /usr/local/include
4
 /usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed
5
 /usr/include/x86_64-linux-gnu
6
 /usr/include
7
End of search list.

Wie teile ich make oder gcc mit, in /usr/include/linux zu suchen?
Am Besten auf möglichst eleganten Weg, ich könnte ja natürlich auch wie 
wild alles in PATH mit aufnehmen, aber das halte ich nicht für 
sinnvoll...

Absolute Adressierung direkt im .c File?
Irgendwo im Makefile?

Sorry für die evtl. dumme Frage, aber ich fange erst an, mich genauer 
mit der Toolchain zu beschäftigen...

von Peter II (Gast)


Lesenswert?

Masl schrieb:
> Wie teile ich make oder gcc mit, in /usr/include/linux zu suchen?

http://www.oreilly.de/german/freebooks/rlinux3ger/ch132.html

 Option -I weisen Sie gcc an, das Verzeichnis include in den 
Include-Pfad einzufügen

von Rolf Magnus (Gast)


Lesenswert?

Masl schrieb:
> Wie teile ich make oder gcc mit, in /usr/include/linux zu suchen?

gcc -I /usr/include/linux

Aber bist du sicher, daß die Datei tatsächlich 
/usr/include/linux/linux/module.h heißt? Und daß sie überhaupt da ist? 
Bei mir ist die nicht vorhanden. Ich vermute, daß sie bei den 
kernel-headers nicht dabei ist. Vielleicht hilft auch das hier: 
http://forum.kernelnewbies.org/read.php?10,102

> Am Besten auf möglichst eleganten Weg, ich könnte ja natürlich auch wie
> wild alles in PATH mit aufnehmen, aber das halte ich nicht für
> sinnvoll...

Was sollte das auch bringen? Beim Suchen nach Headern ist dem Compiler 
völlig egal, was du in PATH stehen hast.

> Absolute Adressierung direkt im .c File?

besser nicht.

> Irgendwo im Makefile?

Da nimmt man sowas üblicherweise in die CFLAGS mit auf.

von Masl (Gast)


Lesenswert?

Ja, in der Tat war mein Fehler, dass die Datei nicht mehr existiert.

Ich hab mir die zweite Auflage des Buches "Linux Gerätetreiber" ausn 
O'Reilly Verlag angeschaut, die aber nur bis Kernel 2.4 gilt.
Aber seit damals hat sich ja einiges getan...

Ansonsten danke dir, dass mit den CFLAGS ist interessant, bin ja grade 
am einarbeiten mit makefiles...

Ansonsten dachte ich immer dass PATH bei sämtlichen Suchvorgängen mit 
einbezogen wird. Wieder was gelernt :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.