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 我的问题是,知道可执行文件“

各位专家好,请回答我下面的问题。 对于二进制文件“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

我的问题是,知道可执行文件“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
。但可执行文件可能很大的原因有很多。