PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QT-Problem[e]



iSpirit
13.07.05, 13:35
Hi Leude

Ich hoffe ich bin im richtigen Forum, ich bin mir nicht sicher

Also ich wollte mich ein bisschen mit QT beschäftigen, aber jedesmal wenn QT
von der Klasse QUrlOperator oder QHttp get() ausführt(sogar bei fertigen
tutorials) kriege ich beim erreichen der Daten ein Speicherzugriffsfehler,
also dachte ich, dass ich eben QT4 ausprobiere und von den Orginalquellen
übersetze.

Aber beim make bekomme ich folgende Fehlermeldung :

/usr/bin/ld: cannot find -lSM
collect2: ld returned 1 exit status

Dass würde ja bedeuten, dass er libSM nicht findet.
Diese ist unter
debian:~# ls /usr/X11R6/lib/libSM* -l
-rw-r--r-- *1 root root 57312 2005-06-02 00:21 /usr/X11R6/lib/libSM.a
lrwxrwxrwx *1 root root * *10 2005-06-30 23:58 /usr/X11R6/lib/libSM.so ->
libSM.so.6
lrwxrwxrwx *1 root root * *12 2005-06-24 02:32 /usr/X11R6/lib/libSM.so.6 ->
libSM.so.6.0
-rw-r--r-- *1 root root 41328 2005-06-02 00:21 /usr/X11R6/lib/libSM.so.6.0

ebenfalls ist der eintrag unter /etc/ld.so.conf drin und und wird normal
gecachet

debian:~# ldconfig -p | grep libSM
libSM.so.6 (libc6,x86-64) => /usr/X11R6/lib/libSM.so.6
libSM.so.6 (libc6) => /var/chroot/sarge-ia32/usr/X11R6/lib/libSM.so.6
libSM.so (libc6,x86-64) => /usr/X11R6/lib/libSM.so

wenn ich QT ohne sessionmanagement übersetzen will kommt der selbe Fehler nur
halt :
/usr/bin/ld: cannot find -lXext

Die dev-libs habe ich bereitsinstalliert, daran kann es nicht liegen .

Ich habe bereits erfolglos gegoogelt :(
Was mach ich falsch ?

Danke schonmal im vorraus!

Grüße iSpirit

edit: sorry das ist wirklich im falschen Forum :(, vielleicht könnte diese naricht verschoben werden ?

IT-Low
13.07.05, 17:50
Also ich wollte mich ein bisschen mit QT beschäftigen, aber jedesmal wenn QT
von der Klasse QUrlOperator oder QHttp get() ausführt(sogar bei fertigen
tutorials) kriege ich beim erreichen der Daten ein Speicherzugriffsfehler,
also dachte ich, dass ich eben QT4 ausprobiere und von den Orginalquellen
übersetze.

QUrlOperator gibt es in QT4 nicht mehr. Das nennt sich in Qt4 Q3UrlOperator und wird nicht mehr weiter entwickelt:
http://doc.trolltech.com/4.0/porting4.html

iSpirit
13.07.05, 22:10
wieso das ? die move funktion fand ich gut(wenn sie bei mir funktioniert hätte *fg)
ne spaß bei seite, ich habe die sache noch in Qt3.3.4 programmiert . Dort waren aber immer Speicherzugriffsfehler, und mitlerweile habe ich alles neugemacht. Weil ich halt in QT anfänger bin und nicht sicher war, ob mein code richtig ist.
mitleiweile bin ich bei QHttp :)

Allerdings wie gesagt das war noch die alte version, aber danke für die Info . WENN ich es endlich kompilieren könnte wäre das die nächste Falle :)

mittlerweile habe ich es auch auf der debian-user-german mailingliste gepostet, naja mal sehen was rauskommt *festeDaumenDrück*

Grüße iSpirit

IT-Low
14.07.05, 18:48
mittlerweile habe ich es auch auf der debian-user-german mailingliste gepostet, naja mal sehen was rauskommt *festeDaumenDrück*


Naja, glaube eher nicht, dass du mit deiner Frage da richtig bist. Versuchs mal auf mrunix.de, qtforum.org oder gleich auf http://lists.trolltech.com/qt-interest .

iSpirit
14.07.05, 23:37
Doch anscheinend wars richtig :) , Andreas Pakulat von der mailingliste hat mir weitergeholfen, in beiden Fällen(Qt4 kompilieren und die sache mit Speicherzugriffsfehler)
Ich weis nicht obs irgendjemand interressiert oder jemand dasselbe problem hat :
ich habe debian-amd64 als Distri
und im make befehl vorher, hat er /usr/X11R6/lib64 includiert, obwohls das nicht gibt.
korrekt ist natürlich /usr/X11R6/lib . - deswegen hat ld die lib nicht gefunden

Keine ahnung wieso dieser Ordner includiert wird, aber wenn ich QT4 von trolltech runterlade , dann ist in den default-mkspec(linux-g++-64) auch , diese /usr/X11R6/lib64 als Datei includiert statt nur .../lib .

woher dieser Fehler kommt, und ob er nur bei trolltech auftritt weis ich nicht, da ich bisher
a) noch keine probleme hatte
b) wenn ich kann - immer binarys verwende.

fuffy
15.07.05, 07:51
Hi!


ich habe debian-amd64 als Distri
und im make befehl vorher, hat er /usr/X11R6/lib64 includiert, obwohls das nicht gibt.
korrekt ist natürlich /usr/X11R6/lib . - deswegen hat ld die lib nicht gefunden
Nein, korrekt ist /usr/X11R6/lib64. Der Filesystem Hierarchy Standard (FHS) schreibt vor, dass 64-Bit Libs auf AMD64 in lib64 landen müssen und lib den 32-Bit Libs vorbehalten ist.
Das hat Kompatibilitätsgründe, denn alte 32-Bit Pakete sollen ja nicht unbedingt neu gebaut werden müssen, nur damit die Libs auf AMD64 in /usr/lib32 statt /usr/lib landen. So reicht für eine 32-Bit Anwendung ein einziges Paket für AMD64 und i386 aus.
Bei debian-amd64 spielt das allerdings derzeit keine Rolle, da man sowieso keine i386-DEBs installieren kann, da dpkg im Gegensatz zu rpm nicht multiarch-tauglich ist. Du kannst also wirklich nur amd64- und all-DEBs installieren.

Gruß
fuffy

iSpirit
15.07.05, 14:45
Hi!
Nein, korrekt ist /usr/X11R6/lib64. Der Filesystem Hierarchy Standard (FHS) schreibt vor, dass 64-Bit Libs auf AMD64 in lib64 landen müssen und lib den 32-Bit Libs vorbehalten ist.

hm , den FHS kenn ich nicht, wenn dus sagst...
mach ich ein link drauf.


Das hat Kompatibilitätsgründe, denn alte 32-Bit Pakete sollen ja nicht unbedingt neu gebaut werden müssen, nur damit die Libs auf AMD64 in /usr/lib32 statt /usr/lib landen. So reicht für eine 32-Bit Anwendung ein einziges Paket für AMD64 und i386 aus.
Bei debian-amd64 spielt das allerdings derzeit keine Rolle, da man sowieso keine i386-DEBs installieren kann, da dpkg im Gegensatz zu rpm nicht multiarch-tauglich ist. Du kannst also wirklich nur amd64- und all-DEBs installieren.


so siehts aus :)
dafür gibts ja den chroot
ich freue mich schon auf multiarch, der irgendwann kommen wird...

danke für info

Grüße iSpirit