我正在尝试构建一个独立的Qt应用程序而不需要任何DLL。我静态地重新编译了Qt 5.4.1。当我编译并运行一个应用程序时,它不需要任何Qt DLL,但它需要libgcc_s_dw2-1.dll。在配置和构建Qt之前,我还编辑了我的mkspecs,我编辑了这些值:
QMAKE_CFLAGS = -pipe -fno-keep-inline-dllexport -static -static-libgcc
QMAKE_CXXFLAGS = -pipe -fno-keep-inline-dllexport -static -static-libgcc -static-libstdc++
(添加-static -static-libstdc ++和-static-libgcc)
我还添加了一个QMAKESPECS环境变量。 当我使用Qt构建一些东西时,我总是可以在输出中看到这个选项,所以我确信mkspecs正在应用。 当我使用这些选项(-static -static-libgcc -static-libstdc ++)构建非Qt程序时,在运行它时它不需要任何DLL。
有人能帮助我吗? 我使用Qt 5.4.1和MinGW-w64 4.9.2
答案 0 :(得分:0)
我现在解决了我的问题。问题是虽然我编辑了变量QMAKE_CXXFLAGS,但它仍然在链接应用程序本身时动态链接标准库,因为它在编译的最后一步中不使用此变量。我只是再次编辑了mkspecs并将-static选项添加到变量QMAKE_LIBS中,它现在可以工作了,我有一个独立的Qt应用程序。