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. Wie lege ich einen neuen Samba User (Read only) für 2 Ordner an ?

    Wie lege ich einen neuen Samba User (Read only) für 2 Ordner an ?: Wie kann ich einen zusätzlichen Samba User auf AIX anlegen, der nur auf 2 Ordner Read-Only-Rechte bekommen soll ?
  2. Für schnelle Ladezeiten Debian oder Ubuntu nutzen?

    Für schnelle Ladezeiten Debian oder Ubuntu nutzen?: Wenn es um schnelle Ladezeiten bei Webseiten geht. Unter anderem. Ist Debian dafür besser geeignet oder Ubuntu? Ich versuche mich an Ubuntu weil...
  3. Suche ein Buch für einen CentOS-Server

    Suche ein Buch für einen CentOS-Server: Hey, kennt jemand von euch ein gutes Buch über CentOS-Server. Also es sollte Sicherheit, Mail, openVPN, nginx, vlt Let's Encrypt und Jabber...
  4. Service/Daemon für Custom Protocol registrieren

    Service/Daemon für Custom Protocol registrieren: Moin! Um es vorweg zu nehmen: ich suche NICHT danach, wie man eine Desktop-Application für ein Protokoll festlegt! Es geht um folgendes: Ich...
  5. Partitionierung für UEFI Boot für Linux

    Partitionierung für UEFI Boot für Linux: Hallo a. Wie sieht ein Partitionsschema für UEFI-Boot aus b. Wenn ich Linux installiere, wo muß ich dann /boot einhängen Beispiele 1. 250MB...
  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