Hallo,
kann mir mal jemand genau beschreiben wie Header files verlinkt gehören, damit diese auch ordentlich aufgerufen werden können.
hab bei einem Makefile die Header über /lib/modules/$(uname -r)/build aufgerufen.
Das build file ist mit einem symlinkg auf /usr/src/linux-headers-$(uname -r) verlinkt.
wenn ich nun z.b.: in einem zu erzeugenden Modul #include einbinden möchte, dann enthält diese datei wiederrum andere includes
ich hätte einen workaround versucht, wo jede Header-datei von /usr/include in die linux-header verlinkt worden wären.
Dadurch ist natürlich ein multiple inclusion entstanden.
werden diese symlinks nicht gemacht, so kann immer nur auf lib/modules/"kernel"/build und deren include Verzeichnis zugegriffen werden. Ist nun im include eine Verzeichnis linux welches stdio.h usw. enthält auch die in stdio.h verzweigten dateien, so können diese nicht eingebunden werden, da ja der compiler auf das include Verzeichnis von build zugreift und nicht rekursiv die Ordner durchläuft!
Fehlt mir dabei ein weiterer Symlink!
mfg
Header Verlinkung
- SubOptimal
- Beiträge: 1709
- Registriert: 10.01.2005 23:25:46
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: bei Frankfurt
Re: Header Verlinkung
Hi,
ohne auch nur eine Datei gesehen zu haben kann man nur mutmaßen. Aber vermutlich hilft Dir die Option »-I/pfad/zu/deinen/header/files« für den gcc schon weiter.
Poste doch man das Makefile (wenn es nicht zu lang ist) oder eine URL zu dem Projekt, dass zu kompilieren willst.
SubOptimal
ohne auch nur eine Datei gesehen zu haben kann man nur mutmaßen. Aber vermutlich hilft Dir die Option »-I/pfad/zu/deinen/header/files« für den gcc schon weiter.
Poste doch man das Makefile (wenn es nicht zu lang ist) oder eine URL zu dem Projekt, dass zu kompilieren willst.
SubOptimal
Re: Header Verlinkung
Hallo Suboptimal,
folgendes makefile wird verwendet:
die build directory ist ein symlink auf /usr/src/"kernel-headers"/.
folgendes makefile wird verwendet:
Code: Alles auswählen
obj-m := test.o
KDIR := /lib/modules/$(shell uname -r)/build/
PWD := $(shell pwd)
all:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean