Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : ld: undefined reference?



SeeksTheMoon
26-01-2005, 10:03
Ich habe ein Problem mit einer C++Anwendung: Das Kompilieren klappt, aber das Linken geht in die Hose und ich weiß nicht warum.

Ich habe ein Projektverzeichnis und darin ein Verzeichnis "out" mit meinen Bibliotheken, gegen die das Programm gelinkt werden soll.

Ich (bzw. mein buildtool scons) kompiliere aus dem Projektverzeichnis mit
g++ -fPIC -Iout/include/cs -Iout/include -c -o src/common/util.cpp
g++ -shared -o libutil.so src/common/util.os
g++ -Iout/include/cs -Iout/include -c -o src/Client.o src/client/Client.cpp
g++ -o out/bin/Client src/client/Client.o -Lout/lib -Lout/lib/cs -lutil

Das *muss* so einfach klappen, aber jede Methode, jeder Konstruktor und jeder Destruktor liefert im letzten Schritt eine "undefined reference".

Also: Kompilieren ok, Linken trotz -L und -l-Parameter geht schief... warum?

undefined
26-01-2005, 15:14
Sehe dir am besten einmal ein Makefile einer anderen Anwendung an. Dann fallen dir deine Linker Fehler auf. so wie du es im Moment hast kann es nicht gehen und fPIC wozu - erstellt du eine eigene Bibliothek?
Beispiel:

g++ -O2 -g -Wall -I/usr/include -L/usr/lib -lmeinlib -o ausgab ........

SeeksTheMoon
26-01-2005, 15:39
die Bibliothek brauche ich. Um es einfach zu machen, habe ich hier nur die Lib und eine Ausführbare angegeben.

Den Fehler habe ich inzwischen gefunden, und zwar reicht es nicht mit -L den Pfad anzugeben, sondern man muss mit -l auch jede einzelne Bibliothek angeben, gegen die gelinkt werden soll.
Jetzt sind diese Fehler alle verschwunden, aber ich habe einen neuen:

ld: .LXX referenced in `.rodata' of out/lib/libcsutil.a: "defined in discarded section" brabra

Kennt diesen Fehler zufällig jemand?
Gibts eigentlich ne Homepage auf der alle Fehlermeldungen (und möglichst Lösungen für jene) des Linkers sind?