gcc编译的可执行文件大小
各位专家好,请回答我下面的问题。 对于二进制文件“test”的大小,我在LinuxFedora中使用了以下命令,并由gcc编译器编译gcc编译的可执行文件大小,gcc,filesize,Gcc,Filesize,各位专家好,请回答我下面的问题。 对于二进制文件“test”的大小,我在LinuxFedora中使用了以下命令,并由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 我的问题是,知道可执行文件“
$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
我的问题是,知道可执行文件“test”大小的正确命令是哪个?为什么两个命令显示不同的结果?您的文件
test
可能包含调试信息,而size
不会报告这些信息ll-h
对于获取实际文件大小更为正确,但是-h
选项为了可读性而对其进行了缩写。您可以使用ls-l
(ll
)或stat
获得确切的文件大小
阅读
size
、objdump
和readelf
的文档了解更多信息。您的文件test
可能包含调试信息,而size
不报告这些信息ll-h
对于获取实际文件大小更为正确,但是-h
选项为了可读性而对其进行了缩写。您可以使用ls-l
(ll
)或stat
获得确切的文件大小
阅读
size
、objdump
和readelf
的文档以了解更多信息。ls程序提供的文件大小为4.3M(实际上是4.5M,因为-h
使用了错误的前缀…但这与此无关)
size
程序给出了截面尺寸。并不是所有的部分都包括在内,这就是为什么它更小的原因。您的程序可能包含调试信息,这些信息不是通过size
打印出来的ls
程序提供的文件大小为4.3M(实际上是4.5M,因为-h
使用了错误的前缀…但这与此无关)
size
程序给出了截面尺寸。并不是所有的部分都包括在内,这就是为什么它更小的原因。您的程序可能包含调试信息,这些信息不是通过size
打印出来的,我想您指的是size
程序,而不是size
。是的,它是用-g标志编译的。在没有-g选项的情况下编译后,ls-l命令显示可执行文件的大小为1499004,“size”命令显示为1163166,但仍然存在差异。我有一块只有2MB内存的硬件板,这意味着我不能加载用-g选项编译的可执行文件,该选项显示可执行文件的大小为4.3MB吗?@user3899508:听起来像是你想要strip
。但是一个可执行文件可能很大有很多原因。我想你指的是size
程序,而不是size
。是的,它是用-g标志编译的。在没有-g选项的情况下编译后,ls-l命令显示可执行文件的大小为1499004,“size”命令显示为1163166,但仍然存在差异。我有一块只有2MB内存的硬件板,这意味着我不能加载用-g选项编译的可执行文件,该选项显示可执行文件的大小为4.3MB吗?@user3899508:听起来像是你想要strip
。但可执行文件可能很大的原因有很多。