linux – Size()vs ls -la vs du -h哪一个是正确的大小?

我正在编译自定义内核,我想测试图像文件的大小.
结果如下:

ls -la | grep vmlinux
-rwxr-xr-x   1 root   root   8167158 May 21 12:14 vmlinux

du -h vmlinux
3.8M    vmlinux

size vmlinux
   text    data     bss     dec     hex filename
2221248  676148  544768 3442164  3485f4 vmlinux

由于它们都显示不同的尺寸,哪一个最接近实际图像尺寸?
他们为什么不同?

他们都是正确的,他们只是显示不同的大小.

> ls显示文件的大小(当您打开并读取它时,这将是您将获得的字节数)
> du显示实际磁盘使用量,由于漏洞,可能小于文件大小
> size显示对象/可执行文件的运行时映像的大小,该大小与文件的大小没有直接关系(bss在文件中不使用任何字节,无论文件有多大,文件可能包含不属于文件大小的调试信息运行时图像等)

如果您想知道可执行文件将占用多少RAM / ROM,不包括动态内存分配,则size会为您提供所需的信息.

https://stackoverflow.com/questions/23789031/size-vs-ls-la-vs-du-h-which-one-is-correct-size

转载注明原文:linux – Size()vs ls -la vs du -h哪一个是正确的大小?