Qt Statisch linken

Wichtelherbert

Cadet 4th Year
Registriert
Juli 2021
Beiträge
86
Guten Morgen zusammen,

wollte anhand dieser Anleitung QT statisch linken und habe dafür die Schritte ausgeführt, allerdings bekomme ich beim Ausführen der "qt-windows-static-build.ps1" am Ende immer die Fehlermeldung:

Code:
mingw32-make: *** No targets specified and no makefile found.  Stop.
mingw32-make: *** No rule to make target 'install'.  Stop.
Out-File : Ein Teil des Pfades "C:\Qt\Static\6.1.3\mkspecs\win32-g++\qmake.conf" konnte nicht gefunden werden.
In C:\Qt\qt-windows10-static-build.ps1:167 Zeichen:6
+ "@ | Out-File -Append $File -Encoding Ascii
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Out-File], DirectoryNotFoundException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

Habe nachgeschaut aber die Datei existiert unter dem Pfad.

Hier mal noch meine angepassten Zeilen:
Code:
param(
    $QtSrcUrl = "https://download.qt.io/official_releases/qt/6.1/6.1.3/single/qt-everywhere-src-6.1.3.zip",
    $QtStaticDir = "C:\Qt\Static", # NO TRAILING SLASH
    $QtVersion = "6.1.3", #If you change this, you'll need to change the URL above to download as well...
    $MingwDir = "",
    [switch]$NoPause = $false
)

Was könnte meine Fehler noch sein?
 
Out-File schreibt doch Dateien. Kann es sein, dass das Skript versucht dort die Config zu schreiben und keinen Zugriff hat? Kopier das ganze Qt Zeug evtl. mal auf ein anderes Laufwerk
 
Habe es auch auf D probiert aber, leider gleiches Ergebnis.
Extra nochmals als Admin angemeldet aber auch da kam die gleiche Fehlermeldung.
 
Fehlermeldung enthält:
"C:\Qt\Static\6.1.3\mkspecs\win32-g++\qmake.conf"

Das Archiv von qt everywhere hat aber diesen Aufbau
/qt-everywhere-src-6.1.3/qtbase/mkspecs/win32-g++/qmake.conf

Bei dem Powershell script was du verlinkt hast steht auch:
$File = "$QtSrcDir\qtbase\mkspecs\win32-g++\qmake.conf"

Ist nur das Erste Treffer mit Ctrl+F im Script.
 
Habe die Pfade mal im Script angepasst und jetzt ist die Fehlermeldung verschwunden.
Nun beendet sich aber das Script mit der Meldung:
Code:
-- Configuring incomplete, errors occurred!

See also "C:/Qt/Static/src/qt-everywhere-src-6.1.3/CMakeFiles/CMakeOutput.log".
See also "C:/Qt/Static/src/qt-everywhere-src-6.1.3/CMakeFiles/CMakeError.log".
CMake Error at qtbase/cmake/QtProcessConfigureArgs.cmake:828 (message):
  CMake exited with code 1.


mingw32-make: *** No targets specified and no makefile found.  Stop.
mingw32-make: *** No rule to make target 'install'.  Stop.

Habe alles so gemacht wie das unter der Anleitung steht. Was habe ich vergessen?
 
Zuletzt bearbeitet:
Wichtelherbert schrieb:
Habe alles so gemacht wie das unter der Anleitung steht. Was habe ich vergessen?
1. Zu schreiben, auf welche Anleitung es sich bei "der Anleitung" handelt. Im Eingangspost hast du nur ein Powershellscript verlinkt und nichts was ich als Anleitung im klassischem Sinne verstehen würde.
2. Die Logfiles zu sichten auf deren Sichtung du explizit hingewiesen wirst
3. Dir Zeile 828 einer bestimmten Datei anzusehen
 
1. Sorry dachte, dass ich diese verlinkt hatte. Hier ist sie: Statisches Linken Windows
2. Das habe ich gemacht, da bekomme ich in der letten Meldung der CMakeError.log Datei:
Code:
mingw32-make.exe: *** [cmTC_22d21/fast] Error 2
3. Zeile 828 ist die Meldung: " CMake exited with code 1."
 
Ich merke schon es ist mein versehen, dass ich meine Angaben sind zu wenig präzise formuliere und versäume explizit zur Eigeninitiative aufzurufen.

Präzision
Es ist natürlich auch sinnvoll nicht nur die Zeile 828 anzuschauen sondern auch umliegende Zeilen. Aufgrund der seriellen Abfolge von Scripten typischerweise die darüber liegenden Instruktionen. Mit etwas Glück findet man dann die Anweisung, für die die Fehlermeldung und -behandlung zuständig ist. Bei jener Anweisung bietet es sich an zu verstehen was sie macht und in Folge festzustellen wieso diese Anweisung nicht erfolgreich ausgeführt werden kann. Da einzelne Anweisungen in komplexeren Programmen und Scripten von anderen Anweisungen abhängen, kann es möglich sein, dass auch diese identifiziert und analysiert werden. Im Zweifelsfall auch mit Debugging mit printf bzw. echo

Bei den Logfiles ist es gar nicht so unähnlich. Wenn da die letzte Meldung ist, dass etwas fehlgeschlagen ist, dann ist diese Information mitunter redundant zu jener Information, die dich überhaupt zur Fehlersuche animierte. Es könnte aber sein, dass die entsprechenden Logs in den Zeilen die zeitlich vorher geschrieben wurden wertvolle Informationen versteckt sind.
Da du diese ja nicht preis gibst, gehe ich davon aus, dass du selber suchen willst. Viel Spaß!
 
  • Gefällt mir
Reaktionen: tollertyp
Ich habe zumindest schon mal eingrenzen können, das es anscheinend an der folgenden Fehlermeldung liegt:
Code:
Check dependencies of 'qttools'
CMake Error at CMakeLists.txt:64 (message):
  Module 'qttools' depends on 'qtactiveqt', but 'qtactiveqt' will not be
  built.

  Note: Use '-skip qttools' to exclude it from build.

nutze ich allerdings den Befehl -skip.... kommt das nächste was nicht gebuildet werden kann.

Habe mal die beiden Logfile angehangen.
 

Anhänge

  • CMakeError.txt
    8,7 KB · Aufrufe: 257
  • CMakeOutput.txt
    3,8 KB · Aufrufe: 180
"libbacktrace could not find executable to open"
ist wonach ich eben gesucht habe. Laut diverser threads wurde das in gcc9 gefixxed. Installier mal eine aktuelle GCC verion. Sollte 11.2 sein.

Cmake brauchst du in version 3.21

und.. bist du mal der offiziellen ANleitung gefolgt?
https://wiki.qt.io/Building_Qt_6_from_Git
 
Anscheinend habe ich via Strawberry Perl GCC installiert, allerdings da in Version 8.3.
Habe die aktuellste Version installiert, aber die GCC Version bekomme ich nicht upgedatet.

Versuche es gerade mal mit der offiziellen Anleitung aus deinem Link, mal schauen.
 
So langsam verzweifele ich an mir selbst.
Hatte Strawberry Perl deinstalliert und wollte über Mingw die GCC Version updaten aber egal welcher Anleitung ich folge, immer bleibt es bei "gcc (MinGW.org GCC-6.3.0-1) 6.3.0"

Außerdem bekomme ich jetzt die Fehlermeldung:

Code:
- Using source syncqt found at: C:/Qt/6.1.3/Src/qtbase/libexec/syncqt.pl
-- Running syncqt for module: 'QtCore'
CMake Error at qtbase/cmake/QtModuleHelpers.cmake:206 (message):
  Failed to run syncqt, return code: Exit code 0xc000007b

Call Stack (most recent call first):
  qtbase/src/corelib/CMakeLists.txt:29 (qt_internal_add_module)


-- Configuring incomplete, errors occurred!
See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeOutput.log".
See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeError.log".
CMake Error at qtbase/cmake/QtProcessConfigureArgs.cmake:828 (message):
  CMake exited with code 1.

Habe Strawberry Perl daraufhin wieder aktiviert, aber Fehlermeldung bleibt bestehen und GCC bleibt aber bei "gcc (MinGW.org GCC-6.3.0-1) 6.3.0"
 
Ich habe keine Antwort für dich aber ein paar Gedanken dazu.

Das du die Datei findest heisst nicht das sie beim Build zu dem Zeitpunkt existiert hat. Wenn sie zu dem Zeipunkt existiert hat, ist sie unter Umständen an dem Punkt exklusiv von einem anderen Prozess geöffnet.
 
Seit ich Strawberry Perl deinstalliert hatte, kam die Fehlermeldung aus Post #14 erneut.
Also ich habe ich es wieder installiert, aber die Fehlermeldung bleibt.

Ich habe absolut keine Ahnung mehr, was ich letztens getan hatte um wenigstens diesen Schritt erfolgreich abzuschließen.

Habe die Logdateien nochmals angehangen, vlt. sieht ja jemand von Euch wo ich noch nachhaken kann.
 

Anhänge

  • CMakeError.txt
    75,3 KB · Aufrufe: 201
  • CMakeOutput.txt
    68,6 KB · Aufrufe: 212
Bekomme ich bei einer kommerziellen Lizenz schon ein statisch gelinktes Build von QT oder muss ich dies dann auch selber machen?
 
Zurück
Oben