externe Libs zu Kernel Modul linken

Dieses Thema im Forum "C/C++" wurde erstellt von sparky, 03.10.2006.

  1. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    Hi,
    ich will mein Kernel-Modul kompileren in dem ich auf die MySQL-Header zugreife. Dazu verwende ich folgendes Makefile:

    Code:
    EXTRA_CFLAGS := -DDEBUG -I/usr/include/mysql
    
    ifneq ($(KERNELRELEASE),)
    obj-m	:= nf_mysql.o
    else
    KDIR	:= /lib/modules/$(shell uname -r)/build
    PWD	:= $(shell pwd)
    
    all:
    	$(MAKE)	-C $(KDIR) SUBDIRS=$(PWD) modules
    endif
    
    in meiner Quelldatei binde ch dann eben mysql.h ein.

    Problem:
    wenn ich 'make' mache bekomme ich den Fehler:
    /usr/include/mysql/mysql.h:33:23 sys/types.h: No such file or directory

    anscheinend findet er die Header-Dateien nicht. Wenn ich noch ein -L/usr/include in mein Makefile packe, dann bekomm ich 10000 Fehler mit doppelt deklarierten Funktionen/Variablen usw.

    Meine Frage - wie mach ich das jetzt richtig :)
    Und ich muss ja noch die libmysqlclient dazulinken - wie mach ich das?
    Mit normalen Makefiles ist das ja alles kein Problem aber für Kernel Module scheint das etwas anders zu laufen?
     
  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. #2 Mµ*e^13.5_?¿, 03.10.2006
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Du programmierst ein Kernel-Modul aber scheinst nicht den Unterschied zwischen Userspace und Kernelspace zu kennen? Das erscheint mir doch ein wenig merkwürdig.
    Man kann nicht einfach alles Mögliche nach belieben zusammenlinken.
    libmysqlclient wird ohne libc nicht funktionieren.
     
  4. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    Ich hatte bisher mit Kernelprogrammierung noch nichts am Hut.
    Es geht mir auch mehr darum ob es möglich ist eine kleine Idee die ich hatte zu realisieren.
    Bin also für jeglichen Input offen :)
     
  5. #4 theton, 04.10.2006
    Zuletzt bearbeitet: 04.10.2006
    theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Mµ*e^13.5_?¿ hat ja schon korrekt drauf hingewiesen... Du kannst nicht einfach Programm-Bibliotheken zum Kernel linken. Programme laufen im Userspace, waehrend Kernel-Module im Kernelspace laufen. Vielleicht solltest du dich erstmal mit dem Aufbau von Linux befassen bevor du dich am Kernel vergreifst. Lies z.B. mal http://ezs.kr.hsnr.de/TreiberBuch/html/sec.theory.html und den Rest von dem Buch, damit du mal eine Vorstellung hast, was man bei der LKM-Programmierung alles beachten muss. Im Kernel rumpfuschen kann naemlich ganz schnell bedeuten, dass man sich sein System, im schlimmsten Fall sogar die Hardware zerschiesst. Der Kernel nutzt eigene Funktionalitaeten und diese zig Fehler, die du bekommst wegen doppelt deklarierten Funktionen, duerften ihre Ursache darin haben, dass die MySQL-Libs die Standard-C-Bibliothek nutzen, waehrend im Kernel viele der dort enthaltenen Funktionen nochmal enthalten sind, allerdings so programmiert, dass sie Speicherverwaltung u.ae. selbst uebernehmen und eben im Kernelspace laufen koennen.

    Die einzige Moeglichkeit, fuer das was du da vorhast ist, dass du einfach alle Funktionalitaeten der MySQL-Bibliothek, die du in deinem Modul nutzen willst, als "Kernel-Code" (also unter Benutzung der Kernel-Funktionalitaeten) nachprogrammierst. Damit erhaelst du wahrscheinlich nicht nur ein unheimlich grosses Kernel-Modul sondern auch die naechsten Jahre was zu tun. Und wenn du damit fertig bist, ist MySQL eh wieder ein paar Versionen weiter. Allerdings sehe ich auch keinen Grund, was man mit MySQL im Kernel anstellen sollte.

    Daher mein Tip: Lass den Plan bleiben und lerne erstmal ein wenig mehr ueber das System, in dem du da gerade rumpfuschen willst. Dir sind offenbar nichtmal die Grundzuege der Systemprogrammierung geschweige denn der Aufbau und die Funktionsweise von Linux vertraut.
     
  6. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    ok das wird wohl komplizierter :)
    Ich lass es dann lieber.
     
Thema:

externe Libs zu Kernel Modul linken

Die Seite wird geladen...

externe Libs zu Kernel Modul linken - Ähnliche Themen

  1. Externes Programm mit Script ausführen?

    Externes Programm mit Script ausführen?: Hallo, ich würde gern ein Script zum klonen von festplatten schreiben z.B. mit dem Programm Mondo Rescue. Ist es möglich externen Programmen...
  2. Kurztipp: Eigene externe IP-Adresse herausfinden

    Kurztipp: Eigene externe IP-Adresse herausfinden: Man kann uPNP nutzen, um am eigenen Router die aktuelle externe IP-Adresse abzufragen. Weiterlesen...
  3. Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

    Displayport + externer Monitor zeigt bei startx nichts erst bei DVI: Hallo ich habe auf meinem ThinkPad T420 i5 Intel HD3000 Grafikkarte onboard 16 GB RAM OpenBSD snapshot amd64 ist von märz installiert...
  4. Linux-Treiber für externe Festplatte von Intenso?

    Linux-Treiber für externe Festplatte von Intenso?: Hallo, an Weihnachten hat es jemand gut mit mir gemeint und mir die externe Festplatte Intenso Memory Center 3.5" mit 3TB geschenkt. Unter...
  5. Ordner auf der externen Festplatte spiegeln.

    Ordner auf der externen Festplatte spiegeln.: Hallo, mit welchem Programm kann ich Ordner oder auch ganz interne Platten auf einer externen Festlplatte spiegeln? Allerdings nicht einfach...