Header Verlinkung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
hwursti
Beiträge: 6
Registriert: 13.07.2011 14:51:42

Header Verlinkung

Beitrag von hwursti » 18.07.2011 11:24:22

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

Benutzeravatar
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

Beitrag von SubOptimal » 18.07.2011 20:15:49

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

hwursti
Beiträge: 6
Registriert: 13.07.2011 14:51:42

Re: Header Verlinkung

Beitrag von hwursti » 20.07.2011 10:25:18

Hallo Suboptimal,

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
die build directory ist ein symlink auf /usr/src/"kernel-headers"/.

Antworten