[C] Extern deklarieren über mehrere Daten

Also ich habe jetzt durch den befehl, den du mir gepostet hast folgenden Ausschnitt gefunden:

[...]
00003f60 t _take_txbuf_locked
U add_info
U alloc_etherdev_mq
[...]

Das heißt doch, add_info sollte doch exisiteren oder?
Nein, das U heißt "undefined".

Wie kompilierst du denn? Existiert denn das Symbol in den Objektdateien? Du definierst add_info in 2.c schon global, oder!?

Gruß
 
der Treiber hat ein fertiges Makefile der die ganzen Dateien eigentlich korrekt kompilieren sollte.

Ich lege die Variablen alle global an. Also außerhalb jeglicher Funktionen lege ich die Variablen an. Sollte folglich global sein, oder?

Ich hab jetzt noch weiter mich da informiert und bin auf folgenden Gedanken gestoßen. Der Treiber an sich besteht aus mehreren Modulen. Und wie es wohl aussieht, versuche ich über das extern modulübergreifend den Zeiger zu benutzen. Kann es daran scheitern? Weil ich hab einfach mal die extern Schlüsselwörter getauscht von der Datei 1.c und 2.c hat er mir zwar die gleiche Fehlermeldung angezeigt bei dmesg, jedoch diesmal von einem anderen Modul.
 
der Treiber hat ein fertiges Makefile der die ganzen Dateien eigentlich korrekt kompilieren sollte.
Und warum funktioniert es dann nicht?
Ich hab jetzt noch weiter mich da informiert und bin auf folgenden Gedanken gestoßen. Der Treiber an sich besteht aus mehreren Modulen.
Dieses kleine Detail hast du wohl vergessen zu erwähnen, was? :mad:

Deshalb hab ich ja auch gefragt wie es kompliert wird, welche Dateien wie miteinander zusammenhängen. Außerdem hast du von einem Modul gesprochen. Sorry, aber wenn die Leute nicht mal ihr Problem richtig beschreiben können und alles aus der Nase gezogen haben wollen dann *** mich das an. :mad:

Du mußt das Symbol exportieren EXPORT_SYMBOL. :google:

Gruß
 
Ja ich sprach vom Treiber Modul... da ich mich noch nicht lang damit befasse, wusste ich halt nicht, dass das Teil in mehrere Module geteilt ist. Sei es auch deswegen, weil ich eigentlich Windoof User bin... Aber egal.

Trotzdem danke für deine Hilfe, soweit ich was lernen konnte und Aufregung bringt auch nichts.

Deswegen habe ich doch eben hingeschrieben, dass nach längerem Informieren ich auf diesen Punkt gestoßen bin, also heißt das auch, nicht das ich es vergessen habe, sondern ich es schlicht und einfach nicht wusste. -.-
 
Zurück