Forum: PC-Programmierung Qt-Statisch linken


von Nico F. (nikotin2803)


Lesenswert?

Hi,

ich weiß es gibt dazu schon einiges im Netz aber ich bekomme es einfach 
nicht hin, dass ich einen Compiler bekomme der Statisch Linken kann.
Gibt es vielleicht eine Batch oder exe die man nur ausführen muss und 
dann baut die mir einen Statischen Compiler zusammen?

Vilen Dank schonmal

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nico F. schrieb:
> aber ich bekomme es einfach nicht hin, dass ich einen Compiler bekomme
> der Statisch Linken kann.

Nicht? Welche Compiler können denn nicht statisch linken?

von Nico F. (nikotin2803)


Lesenswert?

Qt Likt leider nicht statisch.

von Nico F. (nikotin2803)


Lesenswert?

Bei Qt braucht die exe hinterher noch einige dlls damit sie läuft.
Ich will es aber gerne so gelinkt haben das ich hinterher nur eine 
einzige ausführbare exe habe.

von Oliver S. (oliverso)


Lesenswert?


von Bernhard R. (bernhard_r28)


Lesenswert?

Geh mal auf die Seite hier:
https://wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW

Da steht alles drinne!
Ist in erster Linie ein PowerShell-Script, dass dir die Build-Umgebung 
baut.
Der Rest ist Kikikram. ;-)

Das Teil funzt top!

Gruß,

Bernhard

von Nico F. (nikotin2803)


Lesenswert?

> Da steht alles drinne!
> Ist in erster Linie ein PowerShell-Script, dass dir die Build-Umgebung
> baut.
> Der Rest ist Kikikram. ;-)

Habe ich gestern versucht, der sagt mir das er MineGw nicht findet oder 
es nicht installiert ist, obwohl ich Qt mit allen versionen von MineGw 
installiert habe.
Also die "windows-build-qt-static.ps1" habe ich getestet

: Bearbeitet durch User
von foobar (Gast)


Lesenswert?

Das gibt es noch mehr als ein reines technisches Problem.
Wenn du statisch gegen Qt linkst (welche unter der LGPL steht), wird 
deine Applikation automatisch auch GPL, dh du müsstest dich daran 
halten.
Ausgenommen natürlich die kommerzielle Qt Lizenz bzw dynamisches Linken.

von Nico F. (nikotin2803)


Lesenswert?

foobar schrieb im Beitrag
> Das gibt es noch mehr als ein reines technisches Problem.
> Wenn du statisch gegen Qt linkst (welche unter der LGPL steht), wird
> deine Applikation automatisch auch GPL, dh du müsstest dich daran
> halten.
> Ausgenommen natürlich die kommerzielle Qt Lizenz bzw dynamisches Linken.

Das heißt im Klartext das ich das nicht darf?

von Oliver S. (oliverso)


Lesenswert?

Du darfst alles. Wenn du deine Applikation weitergibst, dann halt nur 
unter Berücksichtigung der Lizenzen aller hineingelinkten libs und 
sonstigen Sourcen. Das ist aber jetzt keine große Überraschung, oder?

Oliver

von Nico F. (nikotin2803)


Lesenswert?

Wenn man so drüber nachdenkt ist es keine große Überraschung, habe ich 
nur bis eben nicht getan weil ich es nicht veröffentlichen will.

Muss ich an diesem PowerShell-Script noch etwas einfügen, also zB. Den 
Pfad zu MinGw oder geht das alles automatisch?

Nico

von Bernhard R. (bernhard_r28)


Lesenswert?

Das sollte alles automatisch gehen.
Die PowerShell muss halt Version V3.0 oder neuer sein. Ansonsten war das 
bei mir ein Selbstläufer...

von Nico F. (nikotin2803)


Lesenswert?

Ok, danke ich werde das heute Abend nocheinmal testen.

von Dumdi D. (dumdidum)


Lesenswert?

Und Achtung: erst frei entwickeln und dann eine kommerzielle Lizenz zum 
veröffentöichen kaufen (mieten) ist laut FAQ auch illegal.

von Rolf Magnus (Gast)


Lesenswert?

foobar schrieb:
> Das gibt es noch mehr als ein reines technisches Problem.
> Wenn du statisch gegen Qt linkst (welche unter der LGPL steht), wird
> deine Applikation automatisch auch GPL, dh du müsstest dich daran
> halten.

Das ist nicht richtig. Die Lizenz, unter der man das Programm 
veröffentlichen muss, hat nichts damit zu tun, ob man statisch oder 
dynamisch linkt. Das Problem liegt etwas anders:
Wenn man eine Bibliothek nutzt, die unter LGPL steht, muss man 
demjenigen, dem man das Progrmam weitergibt, die Möglichkeit geben, die 
Bibliothek zu ändern und die geänderte Version dann zusammen mit dem 
Programm benutzen zu können. Bei einem dynamisch gelinkten Programm ist 
das sehr einfach.
Bei einem statischen ist es aber sehr schwierig bis unmöglich, die 
Bibliothek da nachträglich wieder rauszufummeln und durch eine andere 
Version zu ersetzen. Möglich wäre noch, die Object-Files des Programms 
bereitzustellen, so dass das finale Linken auch für den Abnehmer selbst 
möglich ist.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nico F. schrieb:
> weil ich es nicht veröffentlichen will

Nur so: es geht nicht um veröffentlichen, sondern weitergeben.

Solange du es nur für dich nutzen willst, ist das alles egal.  Da
stellt sich dann nur die Frage: warum der Aufwand?  Nur für dich
allein dürfte es doch leichter sein, die DLLs zu kopieren.

von Stefan F. (Gast)


Lesenswert?

Schau mal, hier wurde diese Frage bereits ausführlich durchgekaut: 
https://blog.qt.io/blog/2009/11/30/qt-making-the-right-licensing-decision/

von Nico F. (nikotin2803)


Lesenswert?

Jörg W.

> Solange du es nur für dich nutzen willst, ist das alles egal.  Da
> stellt sich dann nur die Frage: warum der Aufwand?  Nur für dich
> allein dürfte es doch leichter sein, die DLLs zu kopieren.

Problem ist mir fehlt das Platformplugin für Windows und da ich nicht 
weiß wo ich das bei meinem anderen Rechner hinpassen muss währe meine 
Lösung statisches Linken gewesen...

von Stefan F. (Gast)


Lesenswert?

> Problem ist mir fehlt das Platformplugin für Windows

Was soll das sein?

Es genügt doch, die DLL's einfach zur EXE Datei dazu zu legen.

von physiker (Gast)


Lesenswert?


von Nico F. (nikotin2803)


Lesenswert?

physiker schrieb:
> Das hier schon mal angeschaut?
> https://forum.qt.io/topic/20759/failed-to-load-platform-plugin-windows/20
> 
https://forum.qt.io/topic/26520/solved-deployement-of-a-qt5-apps-on-windows7-_fail_


Ja habe ich.

Und die Powershell Datei funktioniert leider nicht, die rennt ohne 
Fehler durch und macht dabei nichts.

Und es währe mir am liebsten das ich eine Datei habe die dann alles hat, 
wenn ich die mal auf einen anderen pc übertragen will.

von Bernhard R. (bernhard_r28)


Lesenswert?

Nico F. schrieb:
> Und die Powershell Datei funktioniert leider nicht, die rennt ohne
> Fehler durch und macht dabei nichts.

Also bei dir gibt es kein neues Verzeichnis "C:\Qt\Static" ?

: Bearbeitet durch User
von Nico F. (nikotin2803)


Angehängte Dateien:

Lesenswert?

Hallo,

vielen Dank erstmal für eure mühe!!!

ich habe es jetzt hinbekommen das das Power Shell-Skript arbeitet (habe 
den Compiler einfach mal statisch eingetragen und dann lief es) mein 
Problem ist jetzt das er mir eine Fehlermeldung schmeißt und ich beim 
Compilen hinterher über 16000 Errors erhalte.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Man kann Text aus dem Kommandozeilenfenster in die Zwischenablage 
kopieren, man kann bei Kommandozeilenaufrufen mit > den Text in eine 
Textdatei ausgeben lassen.

Dein Screenshot ist ziemlich nutzlos.

Interessant ist bei solchen Fehlerlisten immer der Anfang, nicht das 
Ende, denn ganz viele Fehler sind Folgefehler.

von Nico F. (nikotin2803)


Lesenswert?

Kann ich gerne morgen nochmal hochladen aber das wird dann eine etwas 
größere Datei.

von Oliver S. (oliverso)


Lesenswert?

Rufus Τ. F. schrieb:
> Interessant ist bei solchen Fehlerlisten immer der Anfang, nicht das
> Ende, denn ganz viele Fehler sind Folgefehler.

Was sollten dir wohl diese Worte sagen? Zudem erkennt man 
Fehlermeldungen in der Regel daran, das das Wort error in der Meldung 
vorkommt.

Sowas wie copy oder sonstiges ist kein Fehler.

Oliver

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hast Du "Anfang" verstanden?

Hast Du das hier gelesen?

Nico F. schrieb:
> mein Problem ist jetzt das er mir eine Fehlermeldung schmeißt und ich
> beim Compilen hinterher über 16000 Errors erhalte.

Anscheinend nicht. Troll.

von Nico F. (nikotin2803)


Lesenswert?

Nur nochmal zum Verständnis das Script hatte das ganze auch gemacht bis 
es abgebrochen hat.
Dann habe ich einfach mal das was dabei rausgekommen ist bei Qt als 
Compiler eingetragen und dann hat Qt mir die fehler ausgegeben.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nico F. schrieb:
> und dann hat Qt mir die fehler ausgegeben.

Ja. Und die musst Du Dir ansehen. Dabei von vorne anfangen.

von Nico F. (nikotin2803)


Lesenswert?

Moin,

habe es durch neustart des PCs und nachmaliges ausführen des 
PowerShell-Scrips gelöst bekommen.

Nico

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.