2016-12-16 2 views
1

Wenn man alle verfügbaren Bibliotheken mit g ++, statisch verknüpfen will, übergibt diese Person -static Flag an den Compiler.Wie erzwingen Bibliotheken statische Verknüpfung in qt Ersteller

Aber wie geht das mit Qt Creator?

Zum einen habe ich versucht, diesen Rat: How to make Qt and Qtcreator link the libraries statically instead of dynamic?

Der Beitrag schlägt

CONFIG += static 

zu verwenden, aber das funktioniert einfach nicht.

Zweitens habe ich versucht, einen anderen Ansatz und fügte hinzu, die folgende Zeile in meiner .proDatei:

QMAKE_CXXFLAGS += -static 

Das ist nicht das Problem entweder gelöst haben. Ich analysierte Compiler-Ausgabe und entdeckte:

-Static Flag wird nur beim Kompilieren von Quellen zu Objektdateien hinzugefügt. Aber beim Erstellen der ausführbaren Datei fehlt dieses Flag.

Hier sind die genauen Compiler-Befehle, die ich von der Compilerausgabe Tab kopiert:

g++ -c -pipe -fno-keep-inline-dllexport -static -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -I..\..\..\ASSETS\PROG_CPP\MY_CPP\2016\test -I. -I..\..\..\icu\dist\include -I..\..\5.7\mingw53_32\mkspecs\win32-g++ -o debug\main.o ..\..\..\ASSETS\PROG_CPP\MY_CPP\2016\test\main.cpp 
g++ -Wl,-subsystem,console -mthreads -o debug\test.exe debug/main.o -LC:\icu\dist\lib -lsicuio -lsicuin -lsiculx -lsicule -lsicuuc C:\icu\dist\lib\sicudt.a -lpthread -lm 

Wie Qmake zwingen -static auf alle Befehle hinzufügen?

Antwort

2

Die Lösung war ziemlich offensichtlich, wie ich später entdeckte. Es gibt eine spezielle Variable in Qmake, die für Linker-Flags verantwortlich ist: QMAKE_LFLAGS. Also alles, was ich tun musste, ist die folgende in die .pro-Datei hinzuzufügen:

QMAKE_LFLAGS += -static 
+0

Es ist in meinem Fall nicht hilfreich ist, aber dies: 'Unix: LIBS + = -Wl, -Bstatic -l - Wl, -Bdynamic' ist ok – dyomas

+0

Unter Windows bekomme ich unerkannte Option/statisch – jjxtra

Verwandte Themen