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. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. 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.
     
  4. #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. 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...
  2. USB-audio host für tablets für VST

    USB-audio host für tablets für VST: Ich suche eine einfache Möglichkeit, Echtzeit-Hardware im Audiobereich mit Daten über die USB-Schnittstelle anzufahren und zu steuern. Es geht...
  3. BTRFS für RAID1?

    BTRFS für RAID1?: Hallo zusammen Verwendet hier jemand "btrfs", mit oder ohne raid? Wollte das bei Kernel 3.16 ausprobieren, allerdings scheint diese Version...
  4. SAMBA für Windows10 Domäne einrichten

    SAMBA für Windows10 Domäne einrichten: Hallo, ich habe letztes Wochenende verzweifelt versucht, Samba auf meinem Server einzurichten, daher versuche ich aktuell meinen Fehler zu...
  5. Empfehlung für Server Distribution

    Empfehlung für Server Distribution: Hallo, ich habe hier zu Hause einen kleinen Heimserver, auf welchem ich ein paar Daten für den Zugriff im Haus, einen kleinen Web Service für...