当前位置: 首页 > 面试题库 >

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

郁烨
2023-03-14
问题内容

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

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则会为您提供所需的信息。



 类似资料:
  • 想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。 我刚刚读到JRE是JVM的一个实现,HotSpot VM也是JVM的一个实现。哪一个 是否正确?

  • 人们往往一紧张,就连平时挂在嘴边的话都想不起来,把一些常用词汇,时事用语、经济术语整理一下,面试前随手翻阅。以下是出国留学网小编为大家整理的面试时的举止,欢迎大家阅读,更多精彩内容请关注出国留学网. 走进房间的时候 走进房间的时候自己的名字被喊到,就有力地答一声“是”,然后再进门。如果门关着的话,就要以里面听得见的力度敲门,听到回复后再进去。开门关门尽量要轻,向招聘方各位行过礼之后,清楚地说出自己

  • 在 Java中,main() 方法是 Java 应用程序的入口方法,程序在运行的时候,第一个执行的方法就是 main() 方法。main() 方法和其他的方法有很大的不同。   每个类可以有也可以没有main方法。

  • 考虑以下简单类: 默认的模板化set方法对大多数T类型的值都很好,但我需要对特定类型的行为进行特殊化,将其称为String。 因此,在关联的CPP文件中,我添加了以下内容: 为什么在Xcode中工作而在Visual Studio中不工作 哪个编译器的行为正确,该问题应该被认为是另一个编译器中的bug吗? 顺便说一句,我尝试在头文件中创建一个显式签名: Xcode对此没有抱怨,一切都仍然有效。然而,

  • 问题内容: 我有三个类(,和),它们扩展了另一个类()。如何判断对象属于哪个子类?到目前为止,我有一个具有类名称的属性,但是我认为可以使用类似于javascript的typeof的运算符。(类似:) 问题答案: 您可以使用关键字。 但是请注意,需要使用它通常是不良设计的标志。通常,您应该在每个派生类中编写方法覆盖,以便您无需显式地检查是哪个类。

  • 我试图使用一个GridBagLayout有一个JFrame,其中包含一个具有网格布局的JPanel和一个只有一个大按钮的JPanel。我希望所有的行都是相同的大小,并且带有JButton的JPanel与一行的大小相同。然而,按钮面板目前是空的,大约是JFrame的1/3。我不太确定发生了什么,但是维护这个结构对我来说非常重要,因为我的代码的其余部分都使用了这个结构。任何帮助都很感激,并提前感谢您。