各位专家,您好,请回答我的以下问题。对于二进制文件"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 -l
(ll
)或stat
获得确切的文件大小。
阅读 size
、objdump
和readelf
的文档以了解更多信息。
运行以下命令:
size .test.exe
输出::
text data bss dec hex filename
9400 1576 1004 11980 2ecc .test.exe