如何强制库在qt创建器中静态链接

问题描述:

当需要使用g ++静态链接所有可用库时,此人将-static标志传递给编译器。如何强制库在qt创建器中静态链接

但是如何从Qt Creator中实现呢?

首先,我想这样的建议: How to make Qt and Qtcreator link the libraries statically instead of dynamic?

的后建议使用

CONFIG += static 

但是,这是行不通的。

其次,我尝试另一种方法,并添加下面一行到我的.pro文件:

QMAKE_CXXFLAGS += -static 

这并没有解决任何问题。 我分析了编译器的输出并发现:

-static标志仅在将源编译为目标文件时才添加。 但是当生成可执行文件时,此标志不存在。

这里有精确的编译器的命令,我从编译器输出选项卡复制:

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 

如何强制QMAKE到-static添加到所有的命令?

解决方案非常明显,我后来才发现。 Qmake中有一个特殊变量负责链接器标志:QMAKE_LFLAGS。 所以我不得不做的是添加以下的.pro文件:

QMAKE_LFLAGS += -static 
+0

这不是在我的案件有帮助的,但这样的:'UNIX:LIBS + = -Wl,-Bstatic -l - Wl,-Bdynamic'确定 – dyomas

+0

在Windows上,我得到无法识别的选项/ static – jjxtra