【发布时间】:2014-08-21 12:55:22
【问题描述】:
我对 Qt 编程还很陌生,我尝试了很长时间来了解链接库的工作原理。我需要分发一个小程序 - 1000 行左右 - 我开发给几个人。
我静态构建 Qt 因为 我需要一个静态构建,现在我的程序大小急剧增加。
我只使用 Qpushbuttons、Qlinedits、Qlabels 和其他一些东西,我最终得到了一个超过 160Mb 的编译程序,而只有几 MB 是合理的。
我假设它包括不需要的库和类(仅解释)。
如何保持静态构建可接受的大小?
我正在运行 linux 64 位,需要为此编译。
谢谢
【问题讨论】:
-
你怎么知道Qt提供的所有平台抽象代码,几MB是合理的?
-
您的一些 ui 内容只是冰山一角,您对自己能做什么的控制有限。但是您可以通过以下方式减少:剥离调试信息(如果有);使用 Qt5 而不是 qt4。它有更好的解耦。如果您已经在使用带有零调试符号的 qt5,那是您能得到的最好的。
-
@Angew,好吧,任何小程序的大小都不超过几 MB,我不知道我的应该有什么不同。多少MB的小gui程序你见过多少次了? (可以是基本的文本编辑器等
-
我相信大多数 GUI 程序都动态链接 GUI 库,所以这几乎不是一个有用的比较。除了 UmNyobe 所说的之外,您能做的最好的事情就是在您的链接行中搜索任何虚假的
--whole-archive选项,并尝试使用其他链接器选项(例如-s和-S)。 -
嘿@Angew 数千个文件,每个文件最大 15kb,每个文件代表一个包含,总共几个 Gbs。好吧,包括一些带来了其他几个,但仍然......(顺便说一句:fwiw?我不得不谷歌那个。)你说通常程序是动态链接的,这部分是正确的,但是它们如何在计算机上工作没有图书馆?对于大多数依赖项,它们必须静态链接,但它们不像我的东西那么重。怎么会?有什么我不知道的?
标签: c++ qt static-linking shared-libraries