如何精简 Qt 库以删除应用程序未使用的内容?
我正在发布一个编译了 Qt 库的独立 Linux 应用程序。
是否有一个工具可以扫描我的源代码,查看我的应用程序使用哪些类/方法,然后从 Qt 源代码中剔除不必要/未使用的内容,并编译为我的应用程序量身定制的 Qt 库,而不会产生任何额外的膨胀?当然,这是最好的情况。 但是,最接近的现有解决方案是什么,可以让我使用编译的 qt 库使我的 Linux 独立应用程序尽可能精简?
I'm shipping a stand-alone Linux application with Qt libraries compiled-in.
Is there a tool which would scan my source code, see which classes/methods my app uses, then it would pluck the unnecessary/unused stuff out of the Qt source code and compile Qt libraries tailor-made for my application without any extra bloat? This is the best case scenario, of course.
But what is the closest existing solution that would allow me to make my Linux stand-alone app with compiled-in qt libs as slim as possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
链接器已为您完成此操作。如果您静态链接到 Qt 库,则只有您调用的函数的代码才会嵌入到可执行文件中。
您不需要外部软件来执行此操作。您的开发机器上的 Qt 库有多大并不重要。
The linker already does this for you. If you're statically linking to the Qt libraries, then only the code for the functions that you're calling will be embedded into the executable.
You don't need an external piece of software to do this. It doesn't matter how big the Qt libraries are on your development machine.
要进一步减小程序的大小,请尝试 UPX - 它将使您的应用程序变得更小。
for additional size reduction of your program try UPX - it will make your application even smaller.
特别是对于 Qt,自 2019 年初以来,出现了构建过程配置选项
-ltcg
来启用链接时代码生成。 根据Qt公司博客,它允许15静态链接的 Qt 的大小减少了 %,动态链接的 Qt 库的大小虽小但仍然明显。Specifically for Qt, since early 2019 there is the build process configuration option
-ltcg
to enable link-time code generation. According to the Qt company blog, it allows 15% size reduction for statically linked Qt and a smaller but still noticable effect for dynamically linked Qt libraries.