Seite 1 von 1

.so wird nicht gefunden trotz LIBPATH

Verfasst: 23. September 2008 20:17
von dr141
Hallo,

ich hatte ein qt Projekt welches auf zwei Projekte aufgeteilt wurde. Das eine kompiliert nun zu einer dynamischen Bibliothek, .so unter Unix, .dll unter Win. Das funktioniert auch soweit ich das sehe (die Bibs werden erstellt).
Das andere Projekt besteht nur aus einer test-main, die die Bibliothek nutzen soll. Das geht aber nicht, die bib wird nicht gefunden:
make debug
make -f Makefile.Debug
make[1]: Entering directory `/home/martin/workspace/DataInterface_test'
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.4.0/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-4.4.0/include -I../DataInterface -Idebug -I. -o debug/main.o main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:40: warning: unused variable ‘osmFile’
main.cpp:41: warning: unused variable ‘writeOSMFile’
main.cpp:44: warning: unused variable ‘modelId’
g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.4.0/lib -o DataInterface_test debug/main.o -L../DataInterface -L/usr/local/Trolltech/Qt-4.4.0/lib -L../DataInterface -llibDataInterfaces.so.1.0.0 -lQtGui -L/usr/local/Trolltech/Qt-4.4.0/lib -L/usr/X11R6/lib -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
/usr/bin/ld: cannot find -llibDataInterfaces.so.1.0.0
collect2: ld returned 1 exit status
make[1]: Leaving directory `/home/martin/workspace/DataInterface_test'
make[1]: *** [DataInterface_test] Error 1
make: *** [debug] Error 2
Das .pro file:
TEMPLATE = app
TARGET = DataInterface_test
QT += console
SOURCES += main.cpp
FORMS +=
LIBS += -L../DataInterface -llibDataInterfaces.so.1.0.0
LIBPATH += ../DataInterface
INCLUDEPATH += ../DataInterface
Das ganze läuft aus eclipse heraus unter ubuntu.
Hat jemand eine Idee? Ich wäre sehr dankbar!

Verfasst: 24. September 2008 07:48
von Christian81
es mus -lDatainterfaces heissen

Verfasst: 24. September 2008 22:23
von dr141
ne, das macht keinen Unterschied.
Die Bibliothek heißt libDataInterfaces.so bzw. libDataInterfaces.so.1.0.0
Wenn ich das lib weglasse wird sie genausowenig gefunden.

Hat es was zu bedeuten, dass da immer /usr/bin/ld: cannot find -lDataInterfaces.so.1.0.0 steht?

Verfasst: 24. September 2008 22:31
von Christian81
dr141 hat geschrieben:ne, das macht keinen Unterschied.
doch!
-lDataInterfaces.so.1.0.0[/b] steht?
Du sollst -lDataInterfaces angeben !

Verfasst: 25. September 2008 00:12
von dr141
Tatsächlich, ich korrigiere mich!
Nach einem clean scheint es nun zu kompilieren, aber dann wird nichts ausgeführt.
make debug
make -f Makefile.Debug
make[1]: Entering directory `/home/martin/workspace/DataInterface_test'
g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.4.0/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-4.4.0/include/QtCore -I/usr/local/Trolltech/Qt-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-4.4.0/include/QtGui -I/usr/local/Trolltech/Qt-4.4.0/include -I../DataInterface -Idebug -I. -o debug/main.o main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:40: warning: unused variable ‘osmFile’
main.cpp:41: warning: unused variable ‘writeOSMFile’
main.cpp:44: warning: unused variable ‘modelId’
g++ -Wl,-rpath,/usr/local/Trolltech/Qt-4.4.0/lib -o DataInterface_test debug/main.o -L../DataInterface -L/usr/local/Trolltech/Qt-4.4.0/lib -L../DataInterface -lDataInterfaces -lQtGui -L/usr/local/Trolltech/Qt-4.4.0/lib -L/usr/X11R6/lib -lpng -lSM -lICE -pthread -pthread -lXi -lXrender -lXrandr -lfreetype -lfontconfig -lXext -lX11 -lQtCore -lz -lm -pthread -lgthread-2.0 -lrt -lglib-2.0 -ldl -lpthread
make[1]: Leaving directory `/home/martin/workspace/DataInterface_test'
Wenn ich es dann durch eine unter Run As... mit Doppelklick auf c++Application erstellte Applikation laufen lasse, kommt wieder:
/home/martin/workspace/DataInterface_test/DataInterface_test: error while loading shared libraries: libDataInterfaces.so.1: cannot open shared object file: No such file or directory

Verfasst: 25. September 2008 06:31
von Christian81
Leute das sind Compiler und Linux-Basics!
ldconfig nicht ausgeführt für das Verzeichnis wo deine Lib ist. Dmenach weiss der Loader auch nicht wo er sie suchen muss.

Verfasst: 29. September 2008 11:16
von dr141
Nun läuft es :D Danke vielmals. Für dich mögen das Basics sein.
Ich hatte eine Environment-Variable LD_LILBRARY_PATH mit dem Pfad zu der .so angegeben, aber das hat wohl nichts gebracht. Nun habe ich den Pfad in ld.so.conf eingetragen und ldconfig laufen lassen - jetzt geht es.

Verfasst: 29. September 2008 11:19
von Christian81
LD_LILBRARY_PATH ist ja auch falsch - LD_LIBRARY_PATH

Verfasst: 29. September 2008 11:36
von dr141
Den Tippfehler habe ich nur hier gemacht. Es war richtig eingetragen.