Anwendung mit Qt5 bauen fehler

Antworten
DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

Hallo,
ich habe versucht winw Anwendung mit6 LCLWidgetType qt5 zu bauen - Einstellungen entsperchend in den Projekteinstellungen geändert.
Beim Kompilieren gibt es folgende Fehlermeldung:

Code: Alles auswählen

linker: /usr/bin/ld: -lQt5Pas kann nicht gefunden werden

Wie kann ich das fixen ?

Gruß Frank

Benutzeravatar
theo
Beiträge: 8465
Registriert: Mo 11. Sep 2006, 19:01

Re: Anwendung mit Qt5 bauen fehler

Beitrag von theo »

Steht in <lazarus>/lcl/interfaces/qt5/cbindings/README.TXT

DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

hmm... das ist ja ein gefrickel - wird das mal geändert ?

Benutzeravatar
theo
Beiträge: 8465
Registriert: Mo 11. Sep 2006, 19:01

Re: Anwendung mit Qt5 bauen fehler

Beitrag von theo »

Kommt wahrsch. auf die Distribution an. Auf OpenSUSE Leap 15.1 ist es auch im Repository.
Dateianhänge
libqt5pas.png
libqt5pas.png (57.27 KiB) 1298 mal betrachtet

DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

habe Lazarus mit fpcupdeluxe unter Debian installiert - da war es leider nicht includiert.

Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von Warf »

DL3AD hat geschrieben:hmm... das ist ja ein gefrickel - wird das mal geändert ?

Gefrickel?

Code: Alles auswählen

$>cd <lazarus>/lcl/interfaces/qt5/cbindings/
$>qmake && make -j $(nproc) && sudo make install


Das sind insgesamt 3 commands (ohne das CD). Du musst keine Parameter setzen oder sonst was. Das ist doch kein gefrickel.

DL3AD hat geschrieben:habe Lazarus mit fpcupdeluxe unter Debian installiert - da war es leider nicht includiert.

fpcupdeluxe installiert dir ja auch weder QT noch GTK, noch make oder eine der anderen dependencies für Lazarus. Es installiert dir nur Lazarus selbst. Die dependencies musst du über deinen paketmanager installieren. Das ist bei Linux nunmal so, wenn du programme selbst kompilierst (wie es fpcupdeluxe nunmal macht) musst du dich selbst darum kümmern die dependencies zu installieren (spannend wird das auf nem praktisch leeren Linux system, z.B. raspbian ohne Desktop, da fehlt dir praktisch alles). Daher installiere ich Lazarus immer zu erst aus den paket repositories, und kompilier mir nur zusätzliche versionen (z.b. wenn ich auf trunk oder einer alten version arbeiten will) selbst. Auf Arch gibts eigentlich immer die aktuellste Version, auf OpenSuse Tumbleweed auch und im unstable branch von Debian eigentlich auch. Wenn man nix spezielles braucht gibts also wenig grund sich was selbst zu kompilieren. Die version auf arch die ich benutze, ist auch direkt schon gegen QT5 gebaut, d.h. der Paketmanager installiert die entsprechende QT5Pas dependency gleich mit

Auf Arch gibts QT5Pas in den repositories. Hab auch grad geschaut, gibt QT5Pas auch in den Debian repositories: stable testing und unstable. Interessanterweise aber nicht in experimental, warum auch immer.

Der Grund warum das für QT nötig ist, für GTK aber nicht, ist das GTK eine C bibliothek ist, gegen die man direkt linken kann, während QT eine C++ Bibliothek ist, und die interne representation von C++ Objekten nicht standardisiert ist, man also nicht so einfach gegen linken kann (sowie man keine Pascal klassen in DLL's exportieren kann). Was QT5Pas also macht ist einen wrapper für die C++ Objekte auf C funktionen zu bieten, die dann wiederum von Pacal Objekten benutzt werden können. Also bietet praktisch eine Übersetzung von C++ OOP -> Prozedual -> Pascal OOP

DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

Hallo Warf,
Danke für deine ausfühliche Antwort.
C / C++ ist für mich ein rotes Tuch :mrgreen:
Dank deiner Antwort werde ich es sicherlich hin bekommen.

Gruß Frank

Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von Warf »

Ich würde dir eh empfehlen auch die QT-5 version von lazarus zu benutzen, dann sind alle projekte automatisch QT-5 und du musst das nicht immer einstellen.

Die aktuellste version kannst du dir auch aus den paketquellen runterladen Link, oder bei einer bestehenden Lazarus version unter Tools->Lazarus Kompilieren einrichten Das widgetset QT5 auswählen und dann lazarus neu bauen.

Wie oben in meinem post schon erwähnt (keine ahnung wann du ihn gelesen hast, hab ihn nochmal editiert, so vielleicht hast dus nicht gesehen) lazarus aus dem paketmanager zu installieren, dann musst du dich um die dependencies wie QT5Pas nicht selbst kümmern. Außerdem gehts natürlich viel schneller, und lazarus wird mit deinen normalen systemupdates auch mitgeupdated.

Natürlich kannst du auch weiter mit fpcupdeluxe arbeiten, dann würde ich aber wie gesagt auch das Lazarus widgetset umstellen auf QT5, denn ansonsten wird es standardmäßig noch gegen GTK2 gelinkt

PS: falls du nicht weist wie man die unstable repositories benutzt:
1. in /etc/apt/sources.list das repository hinzufügen (oder anderen mirror benutzen, einfach die zeile von dir kopieren und stable durch sid ersetzen):

Code: Alles auswählen

deb http://deb.debian.org/debian sid main

2. apt-get update
3. zum installieren einfach -t sid eingeben, also z.b.:

Code: Alles auswählen

$>sudo apt-get install -t sid lazarus-ide-qt5

Das installiert dir die aktuellste Lazarusversion über die repositories

DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

Hallo Warf,
habe nun verschiedene varianten getestet
1. repo auf sid umgestellt und Lazarus installiert => hat mir den Kde zerlegt :x => Clonezilla und alles wieder frisch :mrgreen:
2. Bei dieser Variante findet er igrendwas von Qt4 nicht.

Code: Alles auswählen

$>cd <lazarus>/lcl/interfaces/qt5/cbindings/
$>qmake && make -j $(nproc) && sudo make install

3. Einfach Lazarus2.0.0 aus dem aktuellen repo installiert auf Qt5 umgestellt um neu zu kompilieren geht auch nicht
Pakete für Qt5 und die Abhängigkeiten hatte ich natürlich vorher geladen.

Gruß Frank

Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von Warf »

DL3AD hat geschrieben:Hallo Warf,
habe nun verschiedene varianten getestet
1. repo auf sid umgestellt und Lazarus installiert => hat mir den Kde zerlegt :x => Clonezilla und alles wieder frisch :mrgreen:

Das ist äußerst interessant, anscheinend hat dir das auch QT geupdated, und du hast noch ne so alte version von KDE drauf das das inkompatibel war (ich mein die aktuelle Plasma version in den stable repositories is 2,5 jahre alt, da wird sich bei QT was getan haben). Ich hatte tatsächlich noch nie so probleme, zugegeben ich hab debian stable bisher nur für kleinere tests benutzt (ob meine software auf debian läuft) und die meiste zeit hol ich mir eh wenn alles an software aus den testing oder unstable repositories (die aktuelle stable GCC version in den repositores ist 5 jahre alt, die kann nicht mal den aktuellen C++ standard von 2017. Komplett inakzeptabel als entwickler ein so veraltetes system zu benutzen).
DL3AD hat geschrieben:2. Bei dieser Variante findet er igrendwas von Qt4 nicht.

Interresant, du kannst einfach mit dpkg --search "dateiname" suchen welches package das enthält, aber eigentlich müsste das keine qt4 abbhängigkeit haben. Hast du qt5-qmake installiert (bzw generell die qt devel packages).
DL3AD hat geschrieben:3. Einfach Lazarus2.0.0 aus dem aktuellen repo installiert auf Qt5 umgestellt um neu zu kompilieren geht auch nicht
Pakete für Qt5 und die Abhängigkeiten hatte ich natürlich vorher geladen.

Und einfach mal versucht QT5Pas zu installieren? Also

Code: Alles auswählen

sudo apt-get install libqt5pas-dev


PS: Das ist jetzt etwas off-topic, aber mich würde mal generell interresieren, du benutzt ja debian stable. Stört es dich wirklich nicht das du 2-5 jahre alte software benutzt? Ich mein auf nem Server kann ich das ja verstehen, aber auf nem PC den du zum entwickeln nutzt ist das ja grausig. Ich mein, in C++ kam seit 2014 (der stand des letzten gcc's auf debian stable) 2 standards raus (c++14 und c++17) und denmächst kommt C++20 raus. Ich benutz zwar kein KDE, kann mir aber auch da vorstellen das in 2,5 jahren es ne ganze menge neuer features und verbesserungen gab. Um ne aktuelle Lazarus version zu benutzen musst du dir sie selbst kompilieren (da wir ja festgestellt haben das unstable dein bisheriges system breaked). Die firefox version in den repos hat noch nicht den neuen tracking schutz und noch keine pinnable tabs.

Stört dich das wirklich nicht? Ich freu mich schon immer wenn ich coole neue features angekündigt sehe (z.B. bei firefox der neue tracking schutz ist verdammt gut), mich würde das richtig stören auf sowas 2 jahre warten zu müssen. Grade bei debian hat man ja die möglichkeit sich zwischen verschiedenen Möglichkeiten zu entscheiden, experimental, wird geupdated wenn was neues rauskommt, unstable, das was zumindest mal funktioniert, aber noch nicht wirklich getestet wurde und testing, was das ist was beim nächsten release zu stable wird.
Man muss ja nicht direkt auf experimental gehen, bei testing oder unstable ists extrem unwahrscheinlich das man sich kaputte software (zumindest breaking software, eventuell gibts kleinere bugs) installiert, aber man bekommt trozdem so ziemlich das neuste (unstable ist meist so 1-2 wochen nach dem entwickler release draussen)

DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

Hallo Warf,
Bin dieses Jahr vollständig auf Debian Buster umgestiegen Privat wie auch in der Firma - Win10 tue ich mir nicht an. :mrgreen:
Windowsprogramme die ich nicht unter Wine zum laufen bekomme habe ich unter VirtualBox am laufen - dass funktioniert erstaunlich gut.
Ja - du machst mich in der tat nachdenklich. Die frage ist nur umsteigen auf Bullseye oder sogar sid ?

Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von Warf »

DL3AD hat geschrieben:Hallo Warf,
Bin dieses Jahr vollständig auf Debian Buster umgestiegen Privat wie auch in der Firma - Win10 tue ich mir nicht an. :mrgreen:
Windowsprogramme die ich nicht unter Wine zum laufen bekomme habe ich unter VirtualBox am laufen - dass funktioniert erstaunlich gut.
Ja - du machst mich in der tat nachdenklich. Die frage ist nur umsteigen auf Bullseye oder sogar sid ?


Wenn ich debian benutze, bin ich komplett auf unstable (also sid) und hatte damit bisher noch keine Probleme. Davor habe ich mich eigentlich nur über Debian aufgeregt (weil ich für die Arbeit mit C++ arbeiten muss und da ist natürlich eine komplett veraltete GCC version beschissen), aber seit dem ich rausgefunden hab wie sauber debian unstable läuft, will ich nicht mehr drauf zurück. Zwar benutz ich am liebsten immernoch Arch (bzw. Manjaro, Arch ist mir doch etwas zu aufwendig), hab aber immer ein Debian unstable rumfliegen, da manche Sachen auf Debian einfach einfacher sind (und wenn man ein programm geschrieben hat muss man mindestens sicher gehen das es auf debian läuft).
Natürlich ist testing immer der sicherere weg. Was mich nur an testing stört ist, das das kurz vor dem release einer neuen major version auch sehr langsam in der entwicklung ist. Mit der major version wird dann alles von testing auf stable gepusht, und dann geht es auf testing wieder schnell weiter. Davon bin ich generell nicht so der fan, ich hab am liebsten einen mehr oder weniger konstanten strom von neuen entwicklungen, daher bin ich ein fan von unstable distributionen. Man muss sich halt damit abfinden das es passieren kann das mal was kaputt geht, man dann entweder die alten versionen wieder aufspielen muss, oder ein paar tage warten muss bis es gefixt ist.
Auf Manjaro hatte ich bisher nur 2 mal, einmal ging mir eine Anwendung kaputt (weiß nicht mehr welche), musste dann halt für ein paar tage auf sie verzichten (hatte kurz vorher meinen cache gelöscht und daher die alte package datei nicht mehr rumfliegen), und einmal gabs einen richtigen breaking bug (treiber), da konnte ich aber ganz einfach die alte version wieder herstellen (bootable usb stick, mit pacman auf meine platte gegangen, alte package datei installiert). Wenn man aber sowas vermeiden will ist testing die sicherere option

Und ja wine ist genial, leider funktioniert nicht alles drauf, vor allem einige PC spiele die ich spiele (Age of Empires 3 aktuell, da geht in Wine der Sound nicht), sodass ich zumindest dafür immer noch ne Windows partition vorhalte. Das faszinierende an Wine ist, das es für sehr alte programme, vor allem spiele, (sehr alt bedeutet vor XP) oftmals bessere kompatibilität hat als Windows 10.
Da ich ein fan von einigen windows 2000 spielen bin, kommt es also gar nicht mal so selten vor das ich für windows programme auf linux gehen muss

DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

...danke fürs Mut machen :mrgreen:
ich werde es mal mit sid versuchen - dann ist ja hoffentlich auch alles aktuell in den repos und muss nichts mehr nachfrickeln.
Wenn es schief geht habe ich ja noch mein Clonezilla (geniales Tool !!!) Backup

Übrigens hab ich festgestellt das die F1 Hilfe in Lazarus nicht geht - muss ich da noch was nachinstallieren ?

Gruß Frank

DL3AD
Beiträge: 435
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Buster (L 2.0.2)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von DL3AD »

Hallo Warf,
habe nun eine komplette Debian sid aufgesetzt - installation lief absolut geschmeidig Lazarus habe ich auch installiert IDE ist QT5
Nun wollte ich die IDE neu kompilieren dann bricht er ab

Panic: make[1]: Entering directory '/usr/lib/lazarus/2.0.6/ide'
Panic: /usr/bin/mkdir: cannot create directory '../units/x86_64-linux/qt5': Permission denied
Panic: make[1]: *** [Makefile:3962: ../units/x86_64-linux/qt5] Error 1
.
.
.
mit GTK2 kompilieren funktioniert ohne weiteres
Nun habe ich Panic :mrgreen:
Was mache ich falsch ?

Gruß Frank

Warf
Beiträge: 1491
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Anwendung mit Qt5 bauen fehler

Beitrag von Warf »

DL3AD hat geschrieben:Hallo Warf,
habe nun eine komplette Debian sid aufgesetzt - installation lief absolut geschmeidig Lazarus habe ich auch installiert IDE ist QT5
Nun wollte ich die IDE neu kompilieren dann bricht er ab

Panic: make[1]: Entering directory '/usr/lib/lazarus/2.0.6/ide'
Panic: /usr/bin/mkdir: cannot create directory '../units/x86_64-linux/qt5': Permission denied
Panic: make[1]: *** [Makefile:3962: ../units/x86_64-linux/qt5] Error 1
.
.
.
mit GTK2 kompilieren funktioniert ohne weiteres
Nun habe ich Panic :mrgreen:
Was mache ich falsch ?

Gruß Frank


Das ist äußerst interresant. Also Problem ist das folgende, wenn du Lazarus über den Paketmanager installierst wird es als root nach /usr/lib/lazarus installiert. Wenn du es dann neu kompilieren willst wird eine Nutzerspezifische version nach ~/.lazarus kompiliert, somit brauchst du keine root berechtigungen um z.B. neue komponenten zu installieren.
Das Problem ist jetzt das der irgendwie versucht trozdem was in /usr/lib/lazarus zu machen, wofür ihm natürlich die berechtigungen fehlen.
Also entweder ist das was einmaliges, dann kannst du lazarus als root starten, neu kompilieren und hoffen das es nicht nochmal auftritt (eventuell musst du danach die berechtigungen in ~/.lazarus erneut für deinen user mit chown user:group ~/.lazarus -R setzen), oder das ist ein Bug in dem debian release package.

Das wirklich interresante ist das, als ich in den makefile sehen wollte, auf meinem Arch (hab akutell kein debian zur hand) Makefile:3962: ../units/x86_64-linux/qt5 nicht exsistiert, also keiner meiner Makefiles hat überhaupt bis zu 3962 zeilen

Antworten