gsoap lib linken

Verschiedenes zu Qt
Antworten
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

gsoap lib linken

Beitrag 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
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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,...
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag 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 
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag 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.
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: gsoap lib linken

Beitrag 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!
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag 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.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag 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..
Mani99
Beiträge: 244
Registriert: 15. April 2009 10:46
Wohnort: München

Beitrag 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.
Antworten