Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何剥离Qt库以删除应用程序未使用的内容?_C++_Linux_Qt_Static Libraries_Static Linking - Fatal编程技术网

C++ 如何剥离Qt库以删除应用程序未使用的内容?

C++ 如何剥离Qt库以删除应用程序未使用的内容?,c++,linux,qt,static-libraries,static-linking,C++,Linux,Qt,Static Libraries,Static Linking,我正在提供一个独立Linux应用程序,其中编译了Qt库 是否有一种工具可以扫描我的源代码,查看我的应用程序使用哪些类/方法,然后从Qt源代码中提取不必要/未使用的内容,并编译为我的应用程序定制的Qt库,而不产生任何额外的膨胀?当然,这是最好的情况。 但是,最接近现有的解决方案是什么,可以让我的Linux单机版应用程序在qt-libs中编译,使其尽可能薄 是否有一种工具可以扫描我的源代码,查看我的应用程序使用哪些类/方法,然后从Qt源代码中提取不必要/未使用的内容,并编译为我的应用程序定制的Qt库

我正在提供一个独立Linux应用程序,其中编译了Qt库

是否有一种工具可以扫描我的源代码,查看我的应用程序使用哪些类/方法,然后从Qt源代码中提取不必要/未使用的内容,并编译为我的应用程序定制的Qt库,而不产生任何额外的膨胀?当然,这是最好的情况。 但是,最接近现有的解决方案是什么,可以让我的Linux单机版应用程序在qt-libs中编译,使其尽可能薄

是否有一种工具可以扫描我的源代码,查看我的应用程序使用哪些类/方法,然后从Qt源代码中提取不必要/未使用的内容,并编译为我的应用程序定制的Qt库,而不产生任何额外的膨胀

链接器已为您执行此操作。如果您静态链接到Qt库,则只有您正在调用的函数的代码才会嵌入到可执行文件中


您不需要外部软件来完成此操作。Qt库在您的开发机器上有多大并不重要

若要进一步减小程序的大小,请尝试-它将使您的应用程序更小

什么是最接近现有的解决方案[…]使我的Linux单机应用程序与Qt libs中编译的尽可能瘦


特别是对于Qt,自2019年初以来,有构建过程配置选项
-ltcg
,以启用链路时间代码生成,对于静态链接的Qt库,它可以减少15%的大小,对于动态链接的Qt库,它可以减少15%的大小,但效果仍然很明显。

不完全正确。没有任何工具,甚至连链接器都无法100%检测是否实际使用了某些插件,如PNG或JPEG加载程序。您必须检查加载的文件名。链接器甚至不会尝试。一个关于消除死代码的相关问题,虽然不是特别关于Qt:很棒的提示!其效果远远超出我的预期:“UPX通常会将程序和DLL的文件大小减少约50%-70%。”