【问题标题】:How to compile Qt as static如何将 Qt 编译为静态
【发布时间】:2011-05-06 00:09:25
【问题描述】:

我目前正在用 Qt 编写代码。如何静态编译代码?

从 Qt 文档中我了解到以下步骤

1) Visual Studio 2008 -> commandPrompt -> QtDir -> configure -static -> nmake

但是,它占用了 17 GB,最后它在完成前退出,说明“空间不够”。

有没有什么简单的方法可以将 Qt 应用程序编译成一个独立的程序?

【问题讨论】:

  • (1) 谷歌知道。 (2) 提及程序时说“代码”应受到惩罚。
  • 如果你是静态链接 Qt,你应该注意潜在的许可问题。上次我检查诺基亚似乎遵循这样的观点,即静态链接到 LGPL 库也会将生成的程序置于 LGPL 之下。

标签: c++ qt user-interface


【解决方案1】:

您已经使用了唯一可能的方法:将源编译为静态。

一些对磁盘大小有很大影响的东西(这似乎是这里的问题),带有相应的配置参数:

  1. 禁用调试:-release
  2. 禁用不需要的模块,尤其是 QtWebKit:-no-webkit -no-script -no-scripttools -no-qt3support -nomake demos -nomake tools -nomake examples
  3. 禁用 LTCG 支持,它具有生成巨大静态库的讨厌副作用:no-ltcg

这些应该有助于将构建大小保持在最低限度。

【讨论】:

  • @rubenvb 你能粗略估计一下所需的磁盘空间吗
  • 对于 32 位编译,我会说少于 7 GB,但这是一个非常粗略的估计。您可以在之后运行del /S /Q *.o 来删除大部分创建的文件,这会删除所有目标文件。
  • @rubenvb 但是没有目标文件怎么能运行呢?
  • 目标文件(MSVC 为 *.obj,GCC 为 *.o)只不过是未链接的编译 *.cpp 文件。在构建库时,所有这些文件都放在一个 *.lib(对于 MSVC,*.a 对于 GCC)和一个 DLL 中,在构建共享库时。目标文件本身不再使用。您的 Qt 项目将链接到生成的库。
  • @rubenvb 它工作得非常好,它占用的总大小是
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
相关资源
最近更新 更多