Všechny jsou správné, jen ukazují různé velikosti.
ls
zobrazuje velikost souboru (když jej otevřete a čtete, tolik bajtů získáte)du
zobrazuje skutečné využití disku, které může být kvůli dírám menší než velikost souborusize
zobrazuje velikost runtime obrazu objektu/spustitelného souboru, který přímo nesouvisí s velikostí souboru (bss nepoužívá v souboru žádné bajty bez ohledu na to, jak velký, soubor může obsahovat ladicí informace, které nejsou součástí runtime obrazu atd.)
Pokud chcete vědět, kolik paměti RAM/ROM zabere spustitelný soubor bez dynamické alokace paměti, size
vám poskytne informace, které potřebujete.