GNU/Linux >> Belajar Linux >  >> Linux

a.out diganti dengan format file ELF?

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.


Linux
  1. header file ELF

  2. Menjalankan file biner datar di Linux

  3. Bagaimana cara mengetahui akhir baris dalam file teks?

  1. Format file core-dump

  2. Apa perbedaan bagian dan segmen dalam format file ELF

  3. Mengubah format tanggal di syslog

  1. Tampilkan Output Perintah atau Isi File dalam Format Kolom

  2. id_rsa.pub file Kesalahan SSH:format tidak valid

  3. GNU nano 2:Format DOS atau Format Mac di Linux