簡體   English   中英

du和size報告目標文件的不同值

[英]du and size report different values for object files

在編譯項目時,我注意到du和size命令的輸出不會累加:

> du -sh X.o
490K X.o

> size X.o
  text    data     bss     dec     hex filename
  2128       0      12    2140     85c X.o

為什么目標文件占用的磁盤空間與文本數據和文件的bss段之和不同? 我在這里想念什么?

size命令顯示執行期間要占用的代碼和數據量。 目標文件的內容遠不止於此。

它從文件格式本身的開銷開始,文件格式必須至少包含size用的信息,以找出每個部分在內存中的大小。 然后是符號表,調試信息以及誰知道什么(取決於編譯器和目標文件格式)。

您可以使用objdump -h (或objdump -x來查看有多少重定位記錄)獲得更全面的信息,該信息仍無法覆蓋開銷,但可以顯示實際的內容量。

du顯示駐留在文件系統Vs上的文件的大小。 size是實際大小(以字節為單位)。

du之所以具有巨大的大小,其原因是-文件系統通常由塊組成,在這些塊上文件不能完全適合這些塊,從而導致這種差異。 例如,如果文件大小為4096字節,則size顯示為4096,與du相似,但當文件大小為5000字節時, size顯示為5000字節,但du顯示8192。

這稱為松弛空間

注意:以上假設文件系統分配以4096字節為單位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM