Sie sind alle korrekt, sie zeigen nur unterschiedliche Größen.
ls
zeigt die Größe der Datei an (wenn Sie sie öffnen und lesen, erhalten Sie so viele Bytes)du
zeigt die tatsächliche Festplattennutzung, die aufgrund von Löchern kleiner sein kann als die Dateigrößesize
zeigt die Größe des Runtime-Image eines Objekts/einer ausführbaren Datei, die nicht direkt mit der Größe der Datei zusammenhängt (bss verwendet keine Bytes in der Datei, egal wie groß, die Datei kann Debugging-Informationen enthalten, die nicht Teil des Runtime-Image sind usw.)
Wenn Sie wissen möchten, wie viel RAM/ROM eine ausführbare Datei ohne dynamische Speicherzuweisung benötigt, size
gibt Ihnen die Informationen, die Sie benötigen.