由 GCC 编译的可执行文件大小



各位专家,您好,请回答我的以下问题。对于二进制文件"test"的大小,我在linux fedora中使用了以下命令,并由gcc编译器编译。

$ll -h test
-rwxrwxr-x. 1 user user 4.3M Feb  8 11:17 test
$size test
text       data     bss     dec     hex filename
891714   244788   26664 1163166  11bf9e test

我的问题是哪个命令是知道可执行文件"测试"大小的正确命令? 为什么两个命令显示不同的结果?

ls程序为您提供文件大小 4.3M(实际上是 4.5M,因为-h使用了错误的前缀......但这无关紧要)。

sizes程序提供截面尺寸。 并非所有部分都包括在内,这就是为什么它更小的原因。 您的程序可能包含调试信息,这些信息不是由 sizes 打印出来的。

您的文件test可能包含调试信息,size不会报告这些信息。 ll -h获取实际文件大小更正确,但-h选项已将其缩写为可读性。您可以使用ls -lll)或stat获得确切的文件大小。

阅读 sizeobjdumpreadelf的文档以了解更多信息。

运行以下命令:

size .test.exe

输出::

text    data     bss     dec     hex filename   
 9400    1576    1004   11980    2ecc .test.exe

最新更新