![](/img/trans.png)
[英]Why does the size of the binary executable increase by different amounts for the same block of code?
[英]Same source code, different executable size?
在 AIX 中,不同版本的编译器可以使可执行文件(或库)大小不同吗?
什么会影响可执行文件/库的大小?
在这里,我们有一堆旧的可执行文件和库,它们不是受版本控制的源代码。 我们需要弄清楚可执行文件是根据我们拥有的源代码构建的。 所以我们再次构建它,但结果(exec,libs)的大小不一样。
我试过..
任何帮助、建议、链接都会有所帮助。 谢谢你。
什么会影响可执行文件/库的大小?
不同版本的编译器。
当然! 它可以生成非常不同的二进制文件,不仅大小不同。 它从不同位置的代码开始,对于相同的源代码完全不同的汇编。
不同的编译选项。
它必须改变大小! 如果您针对大小或速度进行优化,结果肯定会有所不同。 想想循环展开...
不同的操作系统版本及其库(如 libm.a、libpthread.a ..)。
因为它们也是用不同的编译器编译的,所以答案是递归的 :-)
更多的?
也许是一个无穷无尽的清单? 链接时文件的排序、不同的链接器选项、...
我的提示:
可执行文件的大小只是第一次检查。 您可以拥有相同大小的不同可执行文件,这很清楚。
即使您使用相同的编译器和相同的库并运行相同的操作系统,您也需要使用相同的构建脚本/make 进行构建以获得相同的结果。 如果有任何不同(编译器/库/编译器和/或链接器标志、文件顺序不同),则链接的可执行文件不同!
简而言之:如果您不能为您的构建重现环境的精确副本,您将永远不会看到相同的可执行文件,即使源是相同的!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.