unknown symbol in module
-
Hallo zusammen,
ich habe ein Kernel Modul, welches aus mehreren Quellen besteht. Nun brauche ich soetwas wie eine globale Variable. In meiner Hauptdatei modul.c, wo auch die __init und die __exit Funktion sind habe ich eine Variable global deklariert
static unsigned int *my_data;
Hier wird diese Variable auch initialisiert. Diese Initialisierte Variable möchte ich jetzt an einer anderen Stelle des Moduls verwenden. Dazu habe ich die Variable mit
extern unsigned int *my_data;
bekannt gegeben.
Kompilieren des Modules läuft einwandfrei. Allerdings wird das Modul nicht geladen da das Modul zurückgibt: "Unknown symbol in module or unknown parameter (see dmesg)".
Im dmesg sehe ich dann folgendes: "unknown symbol my_data".nm my_module.ko | grep my_datagram liefert mir beide Einträge.
00000040 b my_data U my_data
Warum kann das Symbol dann nicht aufgelöst werden?
Kann mir jemand einen Tipp geben wie ich das Problem lösen kann? Oder muss ich mein globale Variable anders erzeugen?
-
das problem ist das wort static. damit ist die variable nur in diesem module vorhanden und wird nicht exportiert. sie ist nicht global. entfern static und es sollte klappen.
-
Danke für den Hinweis. Das war die Ursache.