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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. Microsoft Teams für Linux bestätigt

    Microsoft Teams für Linux bestätigt: Wie Mitarbeiter von Microsoft bestätigten, wird die Kommunikationsplattform »Microsoft Teams« auch für Linux freigegeben. Weiterlesen...
  2. Mozilla konkretisiert Pläne für DNS über HTTPS

    Mozilla konkretisiert Pläne für DNS über HTTPS: Mozilla hat die Ergebnisse der jüngsten Tests von DNS über HTTPS vorgestellt. Diese führen zu Heuristiken, in welchen Situationen DNS über HTTPS...
  3. KDE definiert neue Ziele für die nächsten Jahre

    KDE definiert neue Ziele für die nächsten Jahre: Das KDE-Projekt hat auf der Konferenz Akademy 2019 neue Ziele für die nächsten zwei Jahre definiert. Weiterlesen...
  4. Google stellt Bibliothek für Differential Privacy vor

    Google stellt Bibliothek für Differential Privacy vor: Googe hat eine intern schon länger genutzte Bibliothek für Differential Privacy unter der freien Apache-Lizenz 2.0 veröffentlicht. Sie ermöglicht...
  5. Purism bietet »PureBoot Bundle« für neue Notebooks

    Purism bietet »PureBoot Bundle« für neue Notebooks: Purism bietet Käufern seiner Notebooks jetzt die Möglichkeit, die Geräte per »PureBoot Bundle« ab Werk mit einem abgesicherten Bootvorgang...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden