S
sualkklaus
Grünschnabel
Hallo,
Ich möchte gerade einen Treiber entwickeln (für 2.6.x Kernel).
Dieser treiber besteht aus mehreren c-Quellen z.B. teil1.c teil2.c und teil3.c
später sind diese Files auch in verschiedenen directoris.
teil3.c ist z.B. ein allgemeiner teil der von verschiedenen Treibern benutzt werden soll.
das benütze Makefile:
Makefile:
Komplette Ausgabe des make:
Noch einige Hintergrund Informationen:
Ich benutze SUSE Linux 10.0
Entwicklung unter KDE als user
Aufruf "make" in einer Console (Befehlsfenster)
wenn ich
obj-m := kmodule_driver.o kmodule_fkt_driver1.o
in Makefile schreibe, wird richtig übersetzt, aber ich bekomme 2 getrennte .ko Files (kmodule_driver.ko und kmodule_fkt_driver1.ko)
Ich brauche aber nur ein gesammtes .ko File!!
Was mache ich falsch?
Gruß
Klaus
Ich möchte gerade einen Treiber entwickeln (für 2.6.x Kernel).
Dieser treiber besteht aus mehreren c-Quellen z.B. teil1.c teil2.c und teil3.c
später sind diese Files auch in verschiedenen directoris.
teil3.c ist z.B. ein allgemeiner teil der von verschiedenen Treibern benutzt werden soll.
das benütze Makefile:
Makefile:
Code:
obj-m := gesamt.o
CURRENT = $(shell uname -r)
KDIR = /lib/modules/$(CURRENT)/build
PWD = $(shell pwd)
gesamt-obj :=kmodule_driver.o kmodule_fkt_driver1.o
default:
@echo --------------------------------------
@echo Testausgabe pwd = $(PWD)
@echo Testausgabe CURRENT = $(CURRENT)
@echo Testausgabe KDIR = $(KDIR)
make -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
-rm -f *.o *.ko .*.cmd .*.flags *.mod.c
##-include $(KDIR)/Rules.make
Komplette Ausgabe des make:
Code:
klaus@linux:~/c_quellen/kmodule_test_projekt/kmodule> make
--------------------------------------
Testausgabe pwd = /home/klaus/c_quellen/kmodule_test_projekt/kmodule
Testausgabe CURRENT = 2.6.13-15-default
Testausgabe KDIR = /lib/modules/2.6.13-15-default/build
make -C /lib/modules/2.6.13-15-default/build SUBDIRS=/home/klaus/c_quellen/kmodule_test_projekt/kmodule modules
make[1]: Entering directory `/usr/src/linux-2.6.13-15-obj/i386/default'
make -C ../../../linux-2.6.13-15 O=../linux-2.6.13-15-obj/i386/default modules
make[4]: *** Keine Regel vorhanden, um das Target »/home/klaus/c_quellen/kmodule_test_projekt/kmodule/gesamt.c«,
benötigt von »/home/klaus/c_quellen/kmodule_test_projekt/kmodule/gesamt.o«, zu erstellen. Schluss.
make[3]: *** [_module_/home/klaus/c_quellen/kmodule_test_projekt/kmodule] Fehler 2
make[2]: *** [modules] Fehler 2
make[1]: *** [modules] Fehler 2
make[1]: Leaving directory `/usr/src/linux-2.6.13-15-obj/i386/default'
make: *** [default] Fehler 2
klaus@linux:~/c_quellen/kmodule_test_projekt/kmodule>
Noch einige Hintergrund Informationen:
Ich benutze SUSE Linux 10.0
Entwicklung unter KDE als user
Aufruf "make" in einer Console (Befehlsfenster)
wenn ich
obj-m := kmodule_driver.o kmodule_fkt_driver1.o
in Makefile schreibe, wird richtig übersetzt, aber ich bekomme 2 getrennte .ko Files (kmodule_driver.ko und kmodule_fkt_driver1.ko)
Ich brauche aber nur ein gesammtes .ko File!!
Was mache ich falsch?
Gruß
Klaus