一尘不染

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

linux

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

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

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


阅读 316

收藏
2020-06-02

共1个答案

一尘不染

它们都是正确的,只是显示不同的大小。

  • ls 显示文件的大小(打开并阅读文件时,这就是您将获得的字节数)
  • du 显示实际的磁盘使用情况,由于出现孔洞,该磁盘使用情况可能小于文件大小
  • size 显示对象/可执行文件的运行时映像的大小,该大小与文件的大小没有直接关系(bss不管文件多大都不会使用字节,文件可能包含调试信息,而该信息不是运行时映像的一部分等)

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

2020-06-02