Sie sind alle korrekt, sie zeigen nur unterschiedliche Größen.
lszeigt die Größe der Datei an (wenn Sie sie öffnen und lesen, erhalten Sie so viele Bytes)duzeigt die tatsächliche Festplattennutzung, die aufgrund von Löchern kleiner sein kann als die Dateigrößesizezeigt 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.