是什么决定了我的可执行文件的大小?

时间:2012-10-16 18:17:42

标签: c++ memory-management

什么决定了我的可执行c ++程序文件的大小?显然它不仅仅取决于变量的大小/数量。如何减小保持变量数量不变的大小?

4 个答案:

答案 0 :(得分:4)

有很多因素。

  • 编译器优化
  • 静态/动态链接
  • 静态分配内存
  • 调试信息
  • 剥离/非剥离二进制文件

使用gcc,您可以使用-Os来优化结果的大小,但这可能会对性能产生影响。

答案 1 :(得分:1)

  1. 动态链接到C ++运行时。
  2. 编译可执行文件而不调试信息。
  3. 使用'optimize for size'标志进行编译。
  4. 如果可以,请删除#iostream和fstream,然后使用低级别
  5. 此外,使用大量模板也会导致尺寸增加
  6. 使用大量内联函数会导致大小增加。
  7. 如果你有很多静态变量和全局变量,那么尽量尽量减少它们。

答案 2 :(得分:1)

除了其他答案之外,还要记住的另一件事是内联。过多的函数内联可以大大增加可执行文件的大小。

答案 3 :(得分:1)

通常,可执行文件的大小并不是很大程度上取决于您拥有的变量常量。根据您所讨论的不同操作系统,这些是可能影响您的可执行文件大小的一些方面:

  1. 资源&库静态链接到可执行文件中。
  2. 您选择生成二进制文件的编译器选项。
  3. 可能未从可执行文件中删除的符号文件和其他调试工具。
  4. 这个答案似乎很相关:) Process for reducing the size of a executable