Make-File für ein kernel-Modul

Dieses Thema im Forum "Programmieren allgemein" wurde erstellt von sualkklaus, 20.10.2006.

  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

Die Seite wird geladen...

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

  1. 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...
  2. 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...
  3. Kleinigkeiten für Euch, mich nicht :-) pkg_add ; DVD rw mounten

    Kleinigkeiten für Euch, mich nicht :-) pkg_add ; DVD rw mounten: Hallo, ich habe 2 Problemchen. Ich kann nichts mehr installieren. Ich brauche aber unbedingt ein Brenn-Programm. Ein schönen Partitionierer usw....
  4. Welche Distri für Programming from the Ground Up

    Welche Distri für Programming from the Ground Up: Hallo! Ich möchter gerne das Buch Programming from the Ground Up durcharbeiten. savannah_nongnu_org/projects/pgubook/ Da geht es um Programmieren...
  5. Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen

    Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen: Hallo, ich würde gerne in einem Textdokument, z.B. von Zeile 10 - 18, an den Zeilenanfang ein # einfügen. Habe mir schon diverse Seiten zu SED...