使用 MinGW 编译独立的 Qt 应用程序

Compiling standalone Qt application using MinGW

我正在尝试构建一个不需要任何 DLL 的独立 Qt 应用程序。我静态地重新编译了 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

我现在解决了我的问题。问题是虽然我编辑了变量 QMAKE_CXXFLAGS,但它在链接应用程序本身时仍然动态链接标准库,因为它在编译的最后一步没有使用这个变量。我只是再次编辑了 mkspecs 并将 -static 选项添加到变量 QMAKE_LIBS 并且它现在可以工作了,我有一个独立的 Qt 应用程序。