[英]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.