Make-File für ein kernel-Modul

Diskutiere Make-File für ein kernel-Modul im Programmieren allgemein Forum im Bereich Programmieren unter Linux/Unix; 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...

  1. #1 sualkklaus, 20.10.2006
    sualkklaus

    sualkklaus Grünschnabel

    Dabei seit:
    20.10.2006
    Beiträge:
    2
    Zustimmungen:
    0
    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:
    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
     
  2. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Wenn du 2 getrennte Module erhälst, wird es daran liegen, dass du 2 init-Funktionen in den Dateien hast, sonst würde er dir daraus keine .ko erstellen. Ein gutes Buch zur Treiber- und damit zur Modul-Programmierung findest du unter http://ezs.kr.hsnr.de/TreiberBuch/html/
    In deinem Fall würde ich mal tippen, dass hier das Problem darin liegt, dass du eine vorkompilierte Objekt-Datei einbinden willst und die gesamt.c sich nicht im Modul-Verzeichnis befindet. Die Zeile
    Code:
    obj-m      := gesamt.o
    veranlasst das Kernel-Buildsystem nach einer gesamt.c zu suchen um gesamt.o zu erstellen. Das wird so nichts.
     
  3. #3 sualkklaus, 23.10.2006
    sualkklaus

    sualkklaus Grünschnabel

    Dabei seit:
    20.10.2006
    Beiträge:
    2
    Zustimmungen:
    0
    Hallo,

    Habe inzwischen den Fehler gefunden!!

    anstatt:
    gesamt-obj :=kmodule_driver.o kmodule_fkt_driver1.o

    muss es lauten:
    gesamt-objs :=kmodule_driver.o kmodule_fkt_driver1.o

    was so ein kleines "s" alles ausmacht!:)

    Gruß
    Klaus
     
Thema: Make-File für ein kernel-Modul
Besucher kamen mit folgenden Suchen
  1. von Objektdatei .o zu .ko

Die Seite wird geladen...

Make-File für ein kernel-Modul - Ähnliche Themen

  1. Empfehlungen für ein Partitionsschema home server

    Empfehlungen für ein Partitionsschema home server: Hallo ihr, ich möchte Debian neu installieren und überlege, wie ich meine Festplatte am sinnvollsten partitioniere Nunja dabei mache ich immer...
  2. Daten für eine Homepage optimieren und verarbeiten?!

    Daten für eine Homepage optimieren und verarbeiten?!: Hi Ihr wisst ja sicher es gibt viele offene Daten die von der Regierung kostenlos zur Verfügung gestellt werden darunter auch "echt zeit daten"....
  3. [gelöst] - for file in ... nur für bestimmte Endungen?

    [gelöst] - for file in ... nur für bestimmte Endungen?: Hallo Zusammen Ich habe einen eigenen Server und das Ziel mittels einem Shell-Skript ein Verzeichnis auf neue Dateien zu überprüfen. Das Skript...
  4. Erweiterbarer Wrapper für GNU find

    Erweiterbarer Wrapper für GNU find: Hallo zusammen, Da ich hier noch einen Account habe, wollte ich mal dieses Forum nutzen, um ganz dreist ein wenig Eigenwerbung zu machen :) Ich...
  5. Suche erweiterbare Audio-APP für 768kHz

    Suche erweiterbare Audio-APP für 768kHz: Kennt jemand eine OS audio APP für den PC, welche höhere Bitraten unterstützt, bzw. die man entsprechend erweitern könnte? Auf dem WIN-Markt habe...