使用 MinGW 静态构建 Qt 5.7 时,如何解决此构建错误?
Posted
技术标签:
【中文标题】使用 MinGW 静态构建 Qt 5.7 时,如何解决此构建错误?【英文标题】:How can I fix this build error when building Qt 5.7 statically with MinGW? 【发布时间】:2016-07-22 13:55:53 【问题描述】:当我尝试静态编译 Qt 5.7
以获得一个独立的 Windows 部署应用程序时,如提及 here 所述,我收到以下错误:
C:\Qt\Qt5.7.0\5.7\Src\qtbase/qmake/library/qmakebuiltins.cpp:在成员函数'QByteArray QMakeEvaluator::getCommandOutput(const QString&) const'中
C:\Qt\Qt5.7.0\5.7\Src\qtbase/qmake/library/qmakebuiltins.cpp:419:94: 错误:'_popen' 未在此范围内声明 + QLatin1String(" && ") + args).toLocal8Bit().constData(), "r"))
C:\Qt\Qt5.7.0\5.7\Src\qtbase/qmake/library/qmakebuiltins.cpp:427:23: 错误:'_pclose' 未在此范围内声明 QT_PCLOSE(proc);
Makefile:204: 目标“qmakebuiltins.o”的配方失败 mingw32-make: *** [qmakebuiltins.o] 错误 1 构建 qmake 失败,返回码 2
我的目标是使最终版本独立并优化大小(仅在库中使用的必要符号),也在我提供的链接中我没有看到 MinGw
提及,我没有 @987654327 @(并且不想得到它)。
【问题讨论】:
请注意,MinGW 工具目前无法清除目标文件中未使用的部分,请参阅this bug report。不过,静态链接和剥离大部分内容应该仍然是可能的。 我还建议您尝试MSYS2 及其 qt5-static 包,它提供了一个现成的静态构建 Qt,省去了构建它的麻烦。 @rubenvb 我尽量避免非官方发布,因为它总是伴随着兼容性问题或项目放弃。 所以您自己构建了一个非官方版本以避免这些问题?构建脚本是可用的,所以原则上你可以自己构建它,见here。这不是最简洁的示例,但是,这是因为 Qt 在正常配置中构建起来并不那么快速和容易。 【参考方案1】:它是开源的。我们所有的食谱和补丁都已发布。 MSYS2 有不被遗弃软件的记录,但如果你找到我们可以做得更好的地方,请帮忙。 MSYS2 与 MSYS2 的其余部分高度兼容。我们不能承诺更多。
【讨论】:
以上是关于使用 MinGW 静态构建 Qt 5.7 时,如何解决此构建错误?的主要内容,如果未能解决你的问题,请参考以下文章
使用 PostgreSQL 编译静态 Qt 5.10.0 时出错