'size' vs 'ls -l' 获取可执行文件的大小

'size' vs 'ls -l' to get the size of an executable file

对于同一个文件,我认为ls -l xxx的输出总是大于等于size xxx的输出。

但是当我输入 ls -l /bin/ls 时,输出是:

 -rwxr-xr-x 1 root root 104508  1月 14  2015 /bin/ls

对于size /bin/ls,输出为:

   text    data     bss     dec     hex filename
 101298     976    3104  105378   19ba2 /bin/ls

为什么 ls 显示的比 size 少? 104508 < 105378

ls -l 告诉您文件的大小,而 size 命令告诉您存储在文件中的可执行映像的大小——加载时需要多少内存。某些段(例如 .bss)是零初始化的,而不需要文件中的数据来初始化它们,因此文件很可能因此小于可执行映像。