Seingat saya, salah satu masalah asli dengan format a.out adalah hanya mendukung tiga bagian:teks, data, dan bss. ELF mengizinkan nomor apa pun (atau setidaknya banyak lagi). Format tajuk a.out sangat sederhana, seperti:
word <magic>
word <text size>
word <data size>
word <bss size>
Format ELF, sebaliknya, memiliki header bagian, dengan nama, ukuran, dll.
Memiliki lebih banyak bagian memungkinkan untuk bagian standar, tetapi juga memberi kita bagian const, bagian konstruktor, dan bahkan satu bagian per fungsi, jika kita menginginkannya.
a.out
format memaksa pustaka bersama menempati tempat tetap di memori. Jika Anda ingin mendistribusikan pustaka bersama a.out, Anda harus mendaftarkan ruang alamatnya. Ini bagus untuk kinerja tetapi tidak berskala sama sekali. Lihat sendiri betapa sulitnya itu (linuxjournal).
Sebaliknya, di ELF, pustaka bersama dapat dimuat di mana saja di memori, dan bahkan dapat muncul di alamat berbeda untuk aplikasi berbeda yang berjalan di komputer yang sama (dengan kode masih dimuat secara efektif hanya di satu tempat di memori fisik)! Untuk mencapai ini, dalam arsitektur IA-32, register (%ebx) harus dikorbankan. Referensi yang lebih komprehensif menunjukkan bahwa pustaka bersama menjadi lebih rumit di ELF, tetapi itu adalah kompleksitas sisi kompiler, bukan sisi pemrogram.