【问题标题】:How to find the code that blows up the size of my application?如何找到导致我的应用程序变大的代码?
【发布时间】:2023-03-14 04:44:02
【问题描述】:

我有一个使用 STL、boost 和其他几个库的 C++ Windows 应用程序。 应用程序做的不多,但规模很大。 我必须找到一种方法来减小应用程序的大小,但我不明白这些库的哪一部分会扩大我的应用程序的大小。

(也许我可以切换STL/boost,或者自己实现smth,或者用不同的方式做smth,等等......)

我们是否有任何工具/指南来调查导入的符号并找出哪些符号可以最大程度地增加应用程序的大小?

更新

我问的是发布版本。

我没有询问编译器的配置,但我询问了可以告诉我的代码的哪些部分最大程度地增加了我的应用程序大小的工具。

静态包含所有库。因此,如果我可以删除重量级的依赖项,应用程序的大小会明显变小。

【问题讨论】:

  • 在 Unix 上,nm 是一个有用的工具 en.wikipedia.org/wiki/Nm_(Unix)
  • @ChrisBeck 谢谢。如果我没有找到适用于 Windows 的东西,我会尝试 nm...
  • 应用链接的 .lib 文件是否很大?如果是,并且您需要这些库,那么对于大小无能为力。为什么尺寸很重要?
  • @Dialectus 但是如果我知道哪个库极大地增加了应用程序的大小,我可以尝试删除该依赖项......

标签: c++ windows size


【解决方案1】:

Boost 是一个大图书馆。如果需要 Boost,则不需要 STL。

如果 STL 足以满足您的需求,那么您可以只使用 STL。

另外,我认为您可以配置 Visual Studio 以将链接过程的跟踪打印到输出。

这里有一些检查库的想法:

How to See the Contents of Windows library (*.lib)

Tools for inspecting .lib files?

【讨论】:

  • 好的。例如我需要 boost.thread。我可以使用标志/VERBOSE:LIB 并看到我的应用程序链接到这个库。但我不知道从 lib 导入的方法列表。而且我不知道方法的大小......
  • @VictorMezrin 我从 stackoverflow 添加了一些可能有用的链接。
【解决方案2】:

您在查看调试版本吗?那可能更大。对可执行文件执行strip 怎么样?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-22
  • 2020-02-23
  • 1970-01-01
  • 2011-05-04
相关资源
最近更新 更多