QT5.8 -static -static-runtime benötigt VSC++ Runtime
Verfasst: 10. Mai 2017 01:10
Hallo,
ich habe mit dem VisualStudio 2015 QT5.8 versucht statisch zu compilieren. Zuerst mit dynamisch gelinkter Visual studio Redistributable und später mit statisch gelinkter.
Ich musste dazu natürlich \MD auf \MT schalten und die Datei wurde ein wenig größer. Das ist jedoch der einzige Unterschied. Trotz " -static -static-runtime" verlangt die produzierte Exe-Datei nach den Runtime-DLLs.
Woran kann das liegen? Irgendwas muss sich ja geändert haben, dass ich den Schalter zum Compilen ändern musste. Aber wie kann es sein, dass noch die DLLs benötigt werden?
P.S.: Was ich mich auch frage gerade beim "static -static-runtime" ging das übersetzen im make Prozess ziemlich schnell. Dafür hat "jom install" ewig gedauert und im Hintergrund den Compiler mehrfach aufgerufen. Ich dachte, da muss am Ende nur noch kopiert werden?
Edit: Ich bekomme außerdem diese Warnung, wenn ich die statische Runtime versuche zu nehmen:
Ich habe "Verknpfungsbibliotheksabhängigkeiten" deaktiviert, wie es mir hier empfohlen wurde, wo ich die Frage auch gepostet habe.
Die Frage "Warum funktioniert das?" steht aber noch immer.
ich habe mit dem VisualStudio 2015 QT5.8 versucht statisch zu compilieren. Zuerst mit dynamisch gelinkter Visual studio Redistributable und später mit statisch gelinkter.
Code: Alles auswählen
configure -prefix /testqt5.8dynRT -static -opengl desktop -no-openssl -opensource -confirm-license -skip qtwebkit -release
configure -prefix /testqt5.8statRT -static -static-runtime -opengl desktop -no-openssl -opensource -confirm-license -skip qtwebkit -release Woran kann das liegen? Irgendwas muss sich ja geändert haben, dass ich den Schalter zum Compilen ändern musste. Aber wie kann es sein, dass noch die DLLs benötigt werden?
P.S.: Was ich mich auch frage gerade beim "static -static-runtime" ging das übersetzen im make Prozess ziemlich schnell. Dafür hat "jom install" ewig gedauert und im Hintergrund den Compiler mehrfach aufgerufen. Ich dachte, da muss am Ende nur noch kopiert werden?
Edit: Ich bekomme außerdem diese Warnung, wenn ich die statische Runtime versuche zu nehmen:
Code: Alles auswählen
1>LINK : warning LNK4098: Standardbibliothek "LIBCMT" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.Die Frage "Warum funktioniert das?" steht aber noch immer.