Joerg Thuemmler wrote:
<IMHO> unresolved symbols heißt i.allg. daß beim Linken in Programmteilen Symbole (Variablen, Funktionen...) verwendet werden, die dort nicht angelegt werden (d.h. i.allg. werden sie als extern definiert o.ä.). Der Linker hat den Inhalt dieser Symbole aber auch in den anderen Bibliotheken oder Quellen, die zum Projekt gehören, nicht finden können. Es kann natürlich sein, daß diese Symbole gar nicht benötigt werden, aber das ist allenfalls bei großen Projekten oder bei Dingen, die verschiedene Architekturen abdecken, wirklich zu erwarten.
Bei Modulen ist das etwas anders. Compilieren kann man die schon, ohne dass es zu Problemen kommt, und eben auch installieren (gelinkt wird da ja nicht). Fuehrt man dann allerdings ein "depmod" aus und es wird versucht, die Abhaengigkeiten der Module aufzuloesen, hagelt es "unresolved symbols". Das ist wohl beim urspruenglichen Fragesteller in diesem Thread passiert. Auch beim Linken des Kernels (vmlinux) kann es zu diesem Problem kommen; dort faellt es aber eher auf, weil dadurch dann gar kein Kernel erstellt wird und das "make bzImage" mit einem Fehler abbricht.
Ich habe bei meinem Laptop - für dessen SmartLink-Modem es nur proprietäre Treiber für bestimmte RedHat Kernel gab, diesen Fehler immer bekommen, wenn ich versucht habe, die Treiber für einen anderen - und sei es einen fast versionsgleichen - Kernel zu erstellen. Zu brauchen waren die dann nie. (Glücklicherweise kann man den neuesten SmartLink-Treiber auch für den Kernel der 8.1er Suse nehmen, sie sind etwas kompatibler geworden).
Module mit "unresolved symbols" koennen nicht geladen werden. Wie sollen sie auch ihre Funktion erfuellen, wenn ihnen die Implementierung einer Funktion o.ae. fehlt!?
Also ich denke, wenn Du wirklich alle nötigen Quellen und Module installiert hast und ggf. in den Makefiles die richtigen Pfade dazu stehen, dann wird es mit diesem Kernel evt. nicht klappen, steht da nix in einer Readme? </IMHO>
Wenn es sich um keine externen Module, sondern schlicht um Module, die aus dem Kernel-Tree erzeugt wurde, handelt, dann ist die Kernel-Konfiguration fehlerhaft. Wenn ich z.B. ein Modul baue, was ACPI braucht, ich ACPI aber bei der Kernel-Konfiguration abgestellt habe, dann wird das Modul vermutlich compilieren, aber nach dem Installieren werden duch depmod "unresolved symbols" gemeldet werden, weil die Implementierung von ACPI dann fehlt (hatte ich ja abgestellt bei der Kernel-Konfiguration). Das wird nicht durch ein "make dep" ueberprueft, wie viele immer annehmen. Ein "make dep" erzeugt nur Abhaengigkeiten der Dateien untereinander zum Compilieren des Kernels (und erstellt nebenbei noch ein paar Header-Dateien aus der Kernelkonfiguration), nicht mehr. Gruesse, Thomson