[gelöst] qt5 linkt gegen qt4 lib

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
wartburgritter
Beiträge: 269
Registriert: 01.10.2005 16:45:42
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Winterthur, selten auch Eisenach

[gelöst] qt5 linkt gegen qt4 lib

Beitrag von wartburgritter » 18.04.2014 23:29:16

Mhh hab ein Problem wo ich nicht weiter komme. Es geht wie schon auch mal um den openglviewer fuer digitale gebaeudemodelle, IfcPlusPlus (https://github.com/berndhahnebach/IFCPlusPlus)

Der branch linuxbuild-qt4 https://github.com/berndhahnebach/IFCPl ... ADME.Linux laesst sich auf Debian Jessies problemlos uebersetzen und funktioniert auch.

Der orginalcode ist jedoch gegen qt5 gelinkt. Wenn ich den zum laufben bringe komme ich naeher an den orginalcode ran. Mein langfristiges Ziel ist, dass der orginalcode direkt unter linux uebersetzt werden kann. mit qt5 waere ich dem ein grosses stuecke naeher. Der branch linuxbuild-qt5 https://github.com/berndhahnebach/IFCPl ... ADME.Linux laesst sich auch problemlos uebersetzen, bloss beim startup gibt es ein speicherzugriffsfehler. Hab ich ihn mit den Debugger gestartet und festgestellt er linkt gegen ne Qt4 lib \

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff06ae90c in ?? () from /usr/lib/x86_64-linux-gnu/libQtGui.so.4

Ok als workaraound libQtGui.so.4 und libQtOpenGL.so.4 mit den Qt5 pendents ersetzt und nun kommt

/home/hugo/ifcplusplus-test/build/Debug/IfcPlusPlusViewer: symbol lookup error: /usr/lib/libosgQt.so.99: undefined symbol: _ZN7QWidget8x11EventEP7_X$ [Inferior 1 (process 2273) exited with code 0177]

Nun bin ich vollkommen mit meinem latein am Ende :(

Gruss bernd

kleines Beispielehaus gibt es hier:
http://ifcopenshell.org/ifcopenhouse/v3 ... nHouse.ifc
oder wer es fett mag ein Riesenmodell hier:
http://www.digital210king.org/downloader.php?file=24
Zuletzt geändert von wartburgritter am 22.04.2014 21:46:13, insgesamt 1-mal geändert.
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: qt5 linkt gegen qt4 lib

Beitrag von rendegast » 19.04.2014 10:55:31

In dem Readme sind dann noch 3 Zeilen
....
/home/hugo/ifcplusplus-test/build/Debug/IfcPlusPlusViewer: symbol lookup error: /usr/lib/libosgQt.so.99: undefined symbol: _ZN7QWidget8x11EventEP7_X$ [Inferior 1 (process 2273) exited with code 0177]

backups zurueckkopieren
mv libQtOpenGL.so.4.old libQtOpenGL.so.4
mv libQtGui.so.4.old libQtGui.so.4
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

wartburgritter
Beiträge: 269
Registriert: 01.10.2005 16:45:42
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Winterthur, selten auch Eisenach

Re: qt5 linkt gegen qt4 lib

Beitrag von wartburgritter » 19.04.2014 12:24:12

rendegast hat geschrieben:In dem Readme sind dann noch 3 Zeilen
backups zurueckkopieren
mv libQtOpenGL.so.4.old libQtOpenGL.so.4
mv libQtGui.so.4.old libQtGui.so.4
Ja klar, die hab ich mit reingeschrieben, damit ich nich vergesse den workaround rueckgaengig zu machen. Die libs werden einfach wieder zurueckkopiert, dann ist das System wieder i.o.

EDIT: evtl. zum Verstaendnis. Dies ist mein repo von IfcPlusPlus auf das die Links zeigen. Der master branch ist fuer MacOSX und clang modifizierter Code mit CMakfiles. Der master branch ist meine Grundlage fuer die linuxbuilds (branch linuxbuild-qt4 und linuxbuild-qt5)
Zuletzt geändert von wartburgritter am 19.04.2014 12:32:46, insgesamt 2-mal geändert.
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch

wartburgritter
Beiträge: 269
Registriert: 01.10.2005 16:45:42
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Winterthur, selten auch Eisenach

Re: qt5 linkt gegen qt4 lib

Beitrag von wartburgritter » 19.04.2014 12:30:13

Bin ein Schritt weiter und habe ein Vermutung. Habe den branch linuxbuild-qt5 mal in einer minimalen VM uebersetzt, in der ich Qt4 gar nicht installiert habe, gleiche Problematik. Nur woher kommen die Qt4libs? Bin auf folgendes gestossen. Paket libopenscenegraph-dev haengt von Paket libopenscenegraph99 ab, welches wiederum von libqt4-opengl, libqtcore4 und libqtgui4 abhaengt. Somit ist klar wie die Qt4libs auf die Platte kommen. Kann es sein, dass openscenegraph nur mit Qt4 zusammenarbeitet und ich openscenegraph selber uebersetzen muesste um es gegen die Qt5libs linken zu lassen?!

Gerade noch bei Debian Sid geschaut, dort haengt libopenscenegraph99 auch von Qt4 ab.

gruss bernd
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: qt5 linkt gegen qt4 lib

Beitrag von peschmae » 19.04.2014 16:55:14

Der einzige Teil von openscenegraph der Qt (4) linkt ist libosgQt, der ganze Rest ist unabhängig. Aber für eine Qt-Applikation ist das vermutlich genau das was benutzt wird ;)

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

wartburgritter
Beiträge: 269
Registriert: 01.10.2005 16:45:42
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Winterthur, selten auch Eisenach

Re: qt5 linkt gegen qt4 lib

Beitrag von wartburgritter » 19.04.2014 20:38:49

peschmae hat geschrieben:Der einzige Teil von openscenegraph der Qt (4) linkt ist libosgQt, der ganze Rest ist unabhängig. Aber für eine Qt-Applikation ist das vermutlich genau das was benutzt wird ;)...
Laesst sich das genau bestaetigen, also feststellen was dafuer verantwortlich ist, dass libQtGui.so.4 verlinkt ist oder aufgerufen wird. In CMakeCache konnte ich nichts diesbezueglich finden. CMaklists.txt von IfcPlusPlus verweist nur auf Qt5 bibliotheken.
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: qt5 linkt gegen qt4 lib

Beitrag von peschmae » 21.04.2014 20:24:56

Naja, gelinkt wird die wohl nicht vom Programm (guck mal mit ldd was das alles linkt). Nur halt von libosgqt.

Ganz allgemein: mach mal einen Debug build von dem Programm, dann ist gdb auch ein bisschen gesprächiger und sagt dir wo im Quellcode er crasht...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

wartburgritter
Beiträge: 269
Registriert: 01.10.2005 16:45:42
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Winterthur, selten auch Eisenach

Re: qt5 linkt gegen qt4 lib

Beitrag von wartburgritter » 22.04.2014 21:45:19

peschmae hat geschrieben:Naja, gelinkt wird die wohl nicht vom Programm (guck mal mit ldd was das alles linkt). Nur halt von libosgqt.
Ahh danke na klar ldd ... Hab ich vor jahren schon mal gebraucht. Waer ich jetzt wohl selber nie drauf gekommen.
peschmae hat geschrieben: Ganz allgemein: mach mal einen Debug build von dem Programm, dann ist gdb auch ein bisschen gesprächiger und sagt dir wo im Quellcode er crasht...
Hab ich doch schon, daher bin ich ueberhaupt auf die Probleme mit den librarys gekommen.

Habe auch im OSG Forum gepostet, da es wohl mit OSG zu tun hat. Aber in englisch ist alles noch viel schwieriger. http://forum.openscenegraph.org/viewtopic.php?t=13713

Code: Alles auswählen

$ ldd IfcPlusPlusViewer | grep libosgQt
libosgQt.so.99 => /usr/lib/libosgQt.so.99 (0x00007f5960fab000)
$ ldd /usr/lib/libosgQt.so.99 | grep Qt
libQtCore.so.4 => /usr/lib/x86_64-linux-gnu/libQtCore.so.4 (0x00007f7223e6e000)
libQtGui.so.4 => /usr/lib/x86_64-linux-gnu/libQtGui.so.4 (0x00007f72231c4000)
libQtOpenGL.so.4 => /usr/lib/x86_64-linux-gnu/libQtOpenGL.so.4 (0x00007f7222ec6000)
Gut also heisst das fuer mich osg selbst uebersetzen, so dass libosgQt gegen Qt5 linkt. Nun gut ich weiss wenigstens wie es kontrollieren kann. Hab ich auch gleich versucht und hat auch geklappt, nur leider bekomme ich mit dem selbst uebersetzten OSG einen Pointererror, wenn ich IfcPlusPlus mit dem selbst uebersetzten OSG uebersetzte. Da bin ich dann wieder beim Debugger. Aber das ist jetzt wohl dann ein anderes Thema.

Danke an alle die geholfen haben. Bernd
Stand März 2020:
Desktop Lenovo ThinkPad X1 mit Debian Buster (super kiste, aber der akku macht nach nunmehr 3 Jahren schlapp)
Fileserver veralte hardware mit neuer grosser hd mit Debian Lenny (ich sollte den wirklich mal ersetzen ... )
Mobiltelefon Sony Xperia mit SailfishOS
Tablet BQ aquaris M10 mit Ubuntu Touch

Antworten