Troubleshooting
In diesem Artikel sollen möglichst viele der – für die Betriebssystemprogrammierung oder für bestimmte Wikiartikel relevanten – Fehlermeldungen des Compilers/Linkers erklärt werden und ein Weg zum Beheben der Fehler aufgezeigt werden. Es sollen hier allerdings keine Probleme zur Sprache kommen, die sich durch einen Blick in „<Programmiersprache> für Dummies“ lösen lassen.
undefined reference to `funktionsname'
Diese Fehlermeldung wird vom Linker ausgegeben, wenn er kein Symbol mit dem Namen funktionsname findet. Dies kann vorkommen, wenn
- du vergessen hast die Objektdatei mit der Definition der Funktion funktionsname zu kompilieren und mit zu linken
- du vergessen hast in der Sourcecodedatei diese Funktion zu definieren
- du aus Versehen die Funktion als static deklariert hast
- du C++ verwendest und funktionsname in einer C++-Quellcodedatei definiert und von einer C/Assembler-Quellcodedatei verwendet wird, eine Lösung findet sich hier
- du Archive (.a-Dateien) verwendest und die Reihenfolge der Kommandozeilenparameter von ld nicht richtig ist oder du vergessen hast --start-group und --end-group anzugeben, siehe hierfür auch das ld-Manual
Falls nichts davon zutrifft, könntest du die Objektdatei, die die deiner Meinung nach entsprechende Funktion enthalten soll, disassemblieren und schauen, ob ein entsprechender Symbolname auftaucht. Alternativ kannst du dir auch mit dem Befehl readelf die Symbole der Objektdatei anzeigen lassen:
readelf -s objectfile.o
C++-spezifisch
expected primary-expression before ‘.’ token
→ Hauptartikel: C++: designated initializers