Seite 1 von 1

gsoap lib linken

Verfasst: 11. März 2011 19:22
von Mani99
Hi,

ich möchte in meinem programm gsoap verwenden, und laut anleitung muss ich die lib libgsoapssl++.a zum programm linken.

Im *.pro file habe ich folgendes angegeben:

Code: Alles auswählen

LIBS += -L/usr/local/lib -lgsoapssl++
Beim kompilieren bekomme ich immer die fehlermeldung:
Datei nicht gefunden: /usr/local/lib/libgsoapssl++.a(libgsoapssl___a-stdsoap2_ssl_cpp.o)
Mir ist klar, das aus der fehlermeldung herausgeht, das der linker die lib nicht findet, aber ich habe vorsichtshalber den pfad zu PATH und LD_LIBRARY_PATH hinzugefügt.

Habe ich noch was vergessen? Bitte um hilfe, danke!

Mfg

Verfasst: 12. März 2011 10:08
von kater
Liegt die Datei überhaupt in /usr/local/lib und ist sie auch mehr als 0 Byte groß? Einfach nur um sicher zu gehen :)

Dann poste noch den Comilier aufruf. Also das hier: g++ -Wl,-rpath,...

Verfasst: 12. März 2011 10:24
von Mani99
Hi,

die libs sind ganz sicher vorhanden!

Code: Alles auswählen

-rw-r--r-- 1 root root   672270 2011-03-02 15:34 libgsoap.a
-rw-r--r-- 1 root root   756982 2011-03-02 15:34 libgsoap++.a
-rw-r--r-- 1 root root   714510 2011-03-02 15:34 libgsoapck.a
-rw-r--r-- 1 root root   800206 2011-03-02 15:34 libgsoapck++.a
-rw-r--r-- 1 root root   896504 2011-03-02 15:34 libgsoapssl.a
-rw-r--r-- 1 root root  1010088 2011-03-02 15:34 libgsoapssl++.a
Und die compiler aufrufe:

Code: Alles auswählen

g++ -c -pipe -g -Wall -W -D_REENTRANT -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I../SOAPTestServer -I/usr/include/qt4/QtCore -I/usr/include/qt4 -I/usr/local/include -I. -I../SOAPTestServer -I. -o main.o ../SOAPTestServer/main.cpp
g++  -o SOAPTestServer main.o    -L/usr/lib -L/usr/local/lib -lgsoapssl++ -lQtCore -lpthread 

Verfasst: 12. März 2011 11:40
von padreigh
Schau mal in die Projektsettings deines QtCreator-Projects. Check dort das Copile/Run Environment auf die Variabeln LD_LIBRARY_PATH und PATH und editier dort zu not das /usr/lib/local rein ... es könnte sein das dort nur /usr/lib/ drin steht (bzw nur dies in den specs die genommen werden drin steht) ... bei mir (1.3.1) ignoriert QtCreator permanent meine in .bashrc erweiterten Suchpfade PATH, LD_LIBRARY_PATH, PKG_CONFIG_PATH - ich muss die auch immer manuell nachtragen - und zwar doppelt, einmal im compileenvironment und einmal im runenvironment - dann tuts.

Re: gsoap lib linken

Verfasst: 12. März 2011 12:56
von solarix
Mani99 hat geschrieben:
Datei nicht gefunden: /usr/local/lib/libgsoapssl++.a(libgsoapssl___a-stdsoap2_ssl_cpp.o)
Mir ist klar, das aus der fehlermeldung herausgeht, das der linker die lib nicht findet ...
Warum ist das so "klar"...? ich meine: wenn der Linker die Library nicht finden würde, woher käme dann die Information "libgsoapssl___a-stdsoap2_ssl_cpp.o"?

Im Internet sind rund um diese Library manch eine Diskussion zu finden.. (anscheinend musste manch einer die Library nochmals selbst erstellen).

Ich würde daher zuerst mal versuchen, das Projekt ohne Library (stdsoap2.cpp & CO direkt einbinden) zu linken..

hth!

Verfasst: 12. März 2011 13:19
von Mani99
Warum ist das so "klar"...? ich meine: wenn der Linker die Library nicht finden würde, woher käme dann die Information "libgsoapssl___a-stdsoap2_ssl_cpp.o"?
Normalerweise kommt, wenn man so eine fehlermeldung postet, die antwort: "Sieh dir die fehlermeldung an, der linker findet die lib nicht!". Ich wollte damit nur sagen, das ich weiß, das der linker der lib nicht findet, nur weiß ich nicht warum! Und woher das "libgsoapssl___a-..." zeugs kommt weiß ich nicht.
Im Internet sind rund um diese Library manch eine Diskussion zu finden.. (anscheinend musste manch einer die Library nochmals selbst erstellen).
Ich hab die lib ja laut dem readme file bei den sourcen selbst gebaut, aber ich werde sie zur sicherheit nochmal bauen.

@padreigh

Danke für den hinweis, ich hab den pfad in den projektsettings bei beiden variablen hinzugefügt, bringt aber nichts.

//EDIT

Ich hab jetzt versucht, die die files laut doku direkt einzubinden, anstatt der lib. Das ergebnis sind ca. 300 fehlermeldungen bzüglich abhängigkeiten.

Verfasst: 12. März 2011 14:41
von solarix

Code: Alles auswählen

$ echo "int main() {}" >> main.cc
$  g++ main.cc -lnichtvorhanden
/usr/bin/ld: cannot find -lnichtvorhanden
Die Fehlermeldung ist eine andere (auch die deutsche), wenn die Lib nicht gefunden wird..
Das ergebnis sind ca. 300 fehlermeldungen bzüglich abhängigkeiten.
Der Compileraufruf und die ersten 1-2 Meldungen wären spannend..

Verfasst: 12. März 2011 15:07
von Mani99
Ich habs jetzt hinbekommen, danke für die vielen hinweise etc.

Nachdem ich mich durch gefühlte 10.000 seiten bei google durchgewühlt habe, habe ich den fehler gefunden.

Der fehler war (und ich hab keine ahnung warum) das ich noch die datei env.h erstellen und mit folgendem aufruf befüllen habe müssen:

Code: Alles auswählen

soapcpp2 -pen evn.h
Diese datei habe ich noch inkludieren müssen, und jetzt läuft es momentan einmal.

Ich werde mir jetzt noch die doku ansehen, warum man diese datei braucht.