Yürütülebilir ve Bağlanabilir Biçim - Executable and Linkable Format
Dosya adı uzantısı |
yok, .axf , .bin , .elf , .o , .prx , .puff , .ko , .mod ve .so
|
---|---|
sihirli sayı | 0x7F 'E' 'L' 'F' |
Tarafından geliştirilmiş | Unix Sistem Laboratuvarları |
Biçim türü | İkili , yürütülebilir , nesne , paylaşılan kitaplık , çekirdek dökümü |
için konteyner | Birçok yürütülebilir ikili biçim |
Gelen bilgi işlem , yürütülebilir ve Bağlantılanabilir Biçimi ( ELF , eski adı Genişletilebilir Bağlama Biçimi ), ortak bir standarttır dosya formatı için çalıştırılabilir dosyaları, nesne kodu , paylaşılan kütüphaneler ve çekirdek dökümlerini . İlk olarak System V Sürüm 4 (SVR4) adlı Unix işletim sistemi sürümünün uygulama ikili arabirimi (ABI) belirtiminde yayınlandı ve daha sonra Araç Arabirimi Standardında, Unix sistemlerinin farklı satıcıları arasında hızla kabul edildi . 1999 yılında 86open projesi ile x86 işlemcilerde Unix ve Unix benzeri sistemler için standart ikili dosya formatı olarak seçilmiştir .
Tasarım gereği, ELF formatı esnek, genişletilebilir ve platformlar arasıdır . Örneğin , belirli bir merkezi işlem birimini (CPU) veya komut kümesi mimarisini hariç tutmaması için farklı endianness'leri ve adres boyutlarını destekler . Bu, birçok farklı donanım platformunda birçok farklı işletim sistemi tarafından benimsenmesine izin verdi .
Dosya düzeni
Her ELF dosyası, bir ELF başlığından ve ardından dosya verisinden oluşur. Veriler şunları içerebilir:
- Sıfır veya daha fazla bellek segmentini açıklayan program başlık tablosu
- Sıfır veya daha fazla bölümü açıklayan bölüm başlık tablosu
- Program başlık tablosundaki veya bölüm başlık tablosundaki girişler tarafından atıfta bulunulan veriler
Segmentler , dosyanın çalışma zamanında yürütülmesi için gerekli bilgileri içerirken, bölümler bağlama ve yer değiştirme için önemli verileri içerir. Dosyanın tamamındaki herhangi bir bayt en fazla bir bölüme ait olabilir ve herhangi bir bölüme ait olmayan yetim baytlar oluşabilir.
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF............|
00000010 02 00 3e 00 01 00 00 00 c5 48 40 00 00 00 00 00 |..>......H@.....|
ELF dosya başlığının örnek hexdump'u
Dosya başlığı
ELF başlığı, 32 veya 64 bit adreslerin kullanılıp kullanılmayacağını tanımlar . Başlık, bu ayardan etkilenen ve onları takip eden diğer alanları dengeleyen üç alan içerir. ELF başlığı, 32 bit ve 64 bit ikili dosyalar için sırasıyla 52 veya 64 bayt uzunluğundadır.
Telafi etmek | Boyut (bayt) | Alan | Amaç | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 bit | 64 bit | 32 bit | 64 bit | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x00 | 4 | e_ident[EI_MAG0] ile e_ident[EI_MAG3] arası |
0x7F ardından ASCII'deELF ( 45 4c 46 ) gelir ; bu dört bayt sihirli sayıyı oluşturur .
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x04 | 1 | e_ident[EI_CLASS] | Bu bayt , sırasıyla 32 veya 64 bit biçimini belirtmek için 1 veya 2 olarak ayarlanır .
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x05 | 1 | e_ident[EI_DATA] | Bu bayt , sırasıyla küçük veya büyük endianlık anlamına gelecek şekilde 1 veya 2 olarak ayarlanır . Bu, offset ile başlayan çok baytlı alanların yorumlanmasını etkiler .
0x10 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x06 | 1 | e_ident[EI_VERSION] | ELF'nin 1 orijinal ve güncel sürümü için ayarlayın .
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x07 | 1 | e_ident[EI_OSABI] | Hedef işletim sistemi ABI'sini tanımlar .
Genellikle |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x08 | 1 | e_ident[EI_ABIVERSION] | Ayrıca ABI sürümünü belirtir. Yorumlanması, hedef ABI'ye bağlıdır. Linux çekirdeğinin (en az 2.6'dan sonra) tanımı yoktur, bu nedenle statik olarak bağlantılı yürütülebilir dosyalar için yoksayılır. Bu durumda, EI_PAD'in ofset ve boyutu 8 .
glibc 2.12+ e_ident[EI_OSABI] == 3 bu alanı dinamik bağlayıcının ABI sürümü olarak ele alır : dinamik bağlayıcının özelliklerinin bir listesini tanımlar, e_ident[EI_ABIVERSION] öğesini paylaşılan nesne (yürütülebilir veya dinamik) tarafından istenen bir özellik düzeyi olarak değerlendirir kütüphane) ve bilinmeyen bir özellik istendiğinde, yani e_ident[EI_ABIVERSION] bilinen en büyük özellikten büyükse onu yüklemeyi reddeder . |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x09 | 7 | e_ident[EI_PAD] | şu anda kullanılmayan, sıfırlarla doldurulmalıdır. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x10 | 2 | e_type | Nesne dosya türünü tanımlar.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x12 | 2 | e_makine | Hedef komut seti mimarisini belirtir . Bazı örnekler:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x14 | 4 | e_sürüm | 1 ELF'nin orijinal sürümü için ayarlayın .
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x18 | 4 | 8 | e_giriş | Bu, işlemin yürütülmeye başladığı giriş noktasının bellek adresidir . Bu alan, daha önce tanımlanan biçime bağlı olarak 32 veya 64 bit uzunluğundadır. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x1C | 0x20 | 4 | 8 | e_phoff | Program başlık tablosunun başlangıcına işaret eder. Genellikle dosya başlığını hemen takip ederek ofset 0x34 veya 0x40 sırasıyla 32 ve 64 bit ELF yürütülebilir dosyaları oluşturur.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x20 | 0x28 | 4 | 8 | e_shoff | Bölüm başlık tablosunun başlangıcına işaret eder. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x24 | 0x30 | 4 | e_flags | Bu alanın yorumlanması hedef mimariye bağlıdır. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x28 | 0x34 | 2 | e_ehsize | Bu başlığın boyutunu içerir, normalde 64-bit için 64 Bayt ve 32-bit biçimi için 52 Bayt. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2A | 0x36 | 2 | e_fentsize | Bir program başlık tablosu girişinin boyutunu içerir. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2C | 0x38 | 2 | e_phnum | Program başlık tablosundaki girişlerin sayısını içerir. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x2E | 0x3A | 2 | e_shentsize | Bir bölüm başlığı tablosu girişinin boyutunu içerir. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x30 | 0x3C | 2 | e_shnum | Bölüm başlık tablosundaki girişlerin sayısını içerir. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x32 | 0x3E | 2 | e_shstrndx | Bölüm adlarını içeren bölüm başlığı tablosu girişinin dizinini içerir. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x34 | 0x40 | ELF Başlığının Sonu (boyut) |
Program başlığı
Program başlık tablosu, sisteme bir süreç görüntüsünün nasıl oluşturulacağını söyler. e_phoff dosya uzaklığında bulunur ve her biri e_phentsize boyutunda olan e_phnum girişlerinden oluşur . 32-bit ELF ile 64-bit ELF'de düzen biraz farklıdır , çünkü p_flags hizalama nedenleriyle farklı bir yapı konumundadır. Her giriş şu şekilde yapılandırılmıştır:
Telafi etmek | Boyut (bayt) | Alan | Amaç | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 bit | 64 bit | 32 bit | 64 bit | |||||||||||||||||||||||||||||||||||||||
0x00 | 4 | p_type | Segmentin türünü tanımlar.
|
|||||||||||||||||||||||||||||||||||||||
0x04 | 4 | p_flags | Segmente bağlı bayraklar (64 bit yapı için konum). | |||||||||||||||||||||||||||||||||||||||
0x04 | 0x08 | 4 | 8 | p_offset | Dosya görüntüsündeki segmentin ofseti. | |||||||||||||||||||||||||||||||||||||
0x08 | 0x10 | 4 | 8 | p_vaddr | Segmentin bellekteki sanal adresi. | |||||||||||||||||||||||||||||||||||||
0x0C | 0x18 | 4 | 8 | p_paddr | Fiziksel adresin ilgili olduğu sistemlerde, segmentin fiziksel adresi için ayrılmıştır. | |||||||||||||||||||||||||||||||||||||
0x10 | 0x20 | 4 | 8 | p_filesz | Dosya görüntüsündeki segmentin bayt cinsinden boyutu. 0 olabilir. | |||||||||||||||||||||||||||||||||||||
0x14 | 0x28 | 4 | 8 | p_memsz | Bellekteki segmentin bayt cinsinden boyutu. 0 olabilir. | |||||||||||||||||||||||||||||||||||||
0x18 | 4 | p_flags | Segmente bağlı bayraklar (32 bit yapı için konum). | |||||||||||||||||||||||||||||||||||||||
0x1C | 0x30 | 4 | 8 | p_align |
0 ve 1 hizalama olmadığını belirtin. Aksi ile olumlu, 2 ayrılmaz gücü olmalıdır p_vaddr eşitlenmesi p_offset modülü p_align .
|
|||||||||||||||||||||||||||||||||||||
0x20 | 0x38 | Program Sonu Başlığı (boyut). |
Bölüm başlığı
Telafi etmek | Boyut (bayt) | Alan | Amaç | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32 bit | 64 bit | 32 bit | 64 bit | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x00 | 4 | sh_name | Bu bölümün adını temsil eden .shstrtab bölümündeki bir dizgenin uzaklığı . | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x04 | 4 | sh_type | Bu başlığın türünü tanımlar.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x08 | 4 | 8 | sh_flags | Bölümün özelliklerini tanımlar.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x0C | 0x10 | 4 | 8 | sh_addr | Yüklenen bölümler için bellekteki bölümün sanal adresi. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x10 | 0x18 | 4 | 8 | sh_offset | Dosya görüntüsündeki bölümün ofseti. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x14 | 0x20 | 4 | 8 | sh_size | Dosya görüntüsündeki bölümün bayt cinsinden boyutu. 0 olabilir. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x18 | 0x28 | 4 | sh_link | İlişkili bir bölümün bölüm dizinini içerir. Bu alan, bölümün türüne bağlı olarak çeşitli amaçlar için kullanılır. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x1C | 0x2C | 4 | sh_info | Bölüm hakkında ek bilgiler içerir. Bu alan, bölümün türüne bağlı olarak çeşitli amaçlar için kullanılır. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x20 | 0x30 | 4 | 8 | sh_addralign | Bölümün gerekli hizalamasını içerir. Bu alan iki katı olmalıdır. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x24 | 0x38 | 4 | 8 | sh_entsize | Sabit boyutlu girdiler içeren bölümler için her girdinin bayt cinsinden boyutunu içerir. Aksi takdirde, bu alan sıfır içerir. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x28 | 0x40 | Bölüm Sonu Başlığı (boyut) |
Aletler
-
readelf
bir veya daha fazla ELF dosyası hakkında bilgi görüntüleyen bir Unix ikili yardımcı programıdır. Bir özgür yazılım uygulaması tarafından sağlanmaktadır GNU binutils . -
elfutils
GNU Binutils'e yalnızca Linux için alternatif araçlar sağlar . -
elfdump
Solaris ve FreeBSD altında bulunan bir ELF dosyasında ELF bilgilerini görüntülemek için kullanılan bir komuttur . -
objdump
ELF dosyaları ve diğer nesne biçimleri hakkında geniş bir bilgi yelpazesi sağlar. ELF verilerini yapılandırmakobjdump
için İkili Dosya Tanımlayıcı kitaplığını arka uç olarak kullanır . - Unix
file
yardımcı programı, yeniden yerleştirilebilir , yürütülebilir veya paylaşılan nesne dosyasındaki kodun amaçlandığı veya bir ELF çekirdek dökümünün üretildiği komut kümesi mimarisi dahil olmak üzere ELF dosyaları hakkında bazı bilgileri görüntüleyebilir .
Uygulamalar
Unix benzeri sistemler
ELF formatı, çeşitli ortamlarda eski yürütülebilir formatların yerini almıştır. Unix benzeri işletim sistemlerinde a.out ve COFF biçimlerinin yerini almıştır :
- Linux
- Solaris / İllümolar
- IRIX
- ÜcretsizBSD
- NetBSD
- OpenBSD
- redoks
- Ejderha Sineği BSD
- Hece
- HP-UX ( SOM kullanmaya devam eden 32-bit PA-RISC programları hariç )
- QNX Nötrino
- MİNİX
Unix dışı benimseme
ELF, Unix dışı işletim sistemlerinde de bazı uyarlamalar gördü, örneğin:
- OpenVMS , Itanium ve amd64 sürümlerinde
- x86 tabanlı bilgisayarlar için BeOS Revizyon 4 ve üstü ( Taşınabilir Yürütülebilir biçiminin yerini aldı ; PowerPC sürümü, Tercih Edilen Yürütülebilir Biçim ile kaldı )
- Haiku , BeOS'un açık kaynaklı bir yeniden uygulaması
- RISC işletim sistemi
- PA-RISC ve x86 sürümlerinde Stratus VOS
- Linux için Windows Alt Sistemini kullanan Windows 10 Yıldönümü Güncellemesi .
- Windows 11
- SkyOS
- Fuşya işletim sistemi
- Z/TPF
- HPE Kesintisiz İşletim Sistemi
- Deo'lar
Oyun konsolları
Bazı oyun konsolları da ELF kullanır:
- PlayStation Portable , PlayStation Vita , PlayStation (konsol) , PlayStation 2 , PlayStation 3 , PlayStation 4 , PlayStation 5
- GP2X
- rüya yayını
- Oyun küpü
- Nintendo 64
- Wii
- Wii U
PowerPC
ELF kullanan PowerPC'de çalışan diğer (işletim) sistemleri :
- AmigaOS 4 , ELF yürütülebilir dosyası, PPC işlemci genişletme kartlarıyla donatılmış Amigas'ta kullanılan önceki Genişletilmiş Hunk Formatının (EHF) yerini almıştır .
- MorphOS
- AROS
Cep telefonları
Cep telefonları ve mobil cihazlar için bazı işletim sistemleri ELF kullanır:
- Symbian OS v9, ELF dosya biçimini temel alan E32Image biçimini kullanır;
- Sony Ericsson , örneğin, W800i , W610 , W300 , vb.
- Siemens , SGOLD ve SGOLD2 platformları: Siemens C65'ten S75'e ve BenQ-Siemens E71/ EL71'e ;
- Motorola , örneğin, E398, SLVR L7 , v360, V3i (yama ve tüm telefon LTE2 uygulanmış).
- Bada , örneğin Samsung Wave S8500 .
- Maemo veya Meego OS çalıştıran Nokia telefonları veya tabletleri, örneğin Nokia N900 .
- Android , Java Yerel Arayüzü için ELF .so (paylaşılan nesne) kitaplıklarını kullanır . İle Android Runtime (ART), çünkü varsayılan Android 5.0 "Lollipop" , tüm uygulamalar yüklemesinde yerel ELF ikili içine derlenir.
Bazı telefonlar kullanımı yoluyla ELF dosyalarını çalıştırabilirsiniz yama ekler montaj kodu ana kadar firmware olarak bilinen bir özelliktir, ELFPack yeraltı içinde Modding kültürü. ELF dosya formatı ayrıca Atmel AVR (8-bit), AVR32 ve Texas Instruments MSP430 mikrodenetleyici mimarileriyle birlikte kullanılır. Open Firmware'in bazı uygulamaları, özellikle Apple'ın şirketin ürettiği hemen hemen tüm PowerPC makinelerinde kullanılan uygulaması olmak üzere ELF dosyalarını da yükleyebilir .
Özellikler
- Genel:
- System V Uygulaması İkili Arabirim Sürümü 4.1 (1997-03-18)
- System V ABI Güncellemesi (Ekim 2009)
- AMD64 :
- KOL :
- IA-32 :
-
IA-64 :
- Itanium Yazılım Kuralları ve Çalışma Zamanı Kılavuzu (Eylül 2000)
-
M32R :
- M32R ELF ABI Eki Sürüm 1.2 (2004-08-26)
-
MIPS :
- System V ABI, MIPS RISC İşlemci Eki
- MIPS EABI belgeleri (2003-06-11)
- Motorola6800 :
-
PA-RISC :
- PA-RISC Sürüm 1.43 için ELF Eki (6 Ekim 1997)
-
PowerPC :
- Sistem V ABI, PPC Eki
- PowerPC Gömülü Uygulama İkili Arabirimi 32-Bit Uygulaması (1995-10-01)
- 64-bit PowerPC ELF Uygulaması İkili Arayüz Eki Sürüm 1.9 (2004)
- SPARC :
- S/390 :
- zSerisi :
- Symbian OS 9:
Linux Standard Base (LSB) belirtildiği hangi mimarileri için yukarıdaki bazı özellikleri tamamlar. Örneğin, System V ABI, AMD64 Eki için durum böyledir.
86açık
86open , ortak PC uyumlu x86 mimarisinde Unix ve Unix benzeri işletim sistemleri için ortak bir ikili dosya formatı üzerinde fikir birliği oluşturmak ve yazılım geliştiricilerini mimariye bağlantı yapmaya teşvik etmek için bir projeydi . İlk fikir, Tek UNIX Spesifikasyonunun öncülü olan Spec 1170'in küçük bir alt kümesinde ve değiştirilmemiş ikili dosyaların x86 Unix benzeri işletim sistemlerinde çalışmasını sağlamak için GNU C Kitaplığı'nda (glibc) standartlaştırmaktı. Proje başlangıçta "Spec 150" olarak adlandırıldı.
Sonunda seçilen format ELF, özellikle de ilgili tüm satıcılar ve işletim sistemleri tarafından desteklenen fiili bir standart olduğu ortaya çıktıktan sonra ELF'nin Linux uygulamasıydı .
Grup, 1997'de e-posta tartışmalarına başladı ve ilk olarak 22 Ağustos 1997'de Santa Cruz Operasyon ofislerinde bir araya geldi .
Yönlendirme komitesi Marc Ewing , Dion Johnson, Evan Leibovitch, Bruce Perens , Andrew Roach, Bryan Wayne Sparks ve Linus Torvalds'dı . Projedeki diğer kişiler ise Keith Bostic , Chuck Cranor, Michael Davidson, Chris G. Demetriou, Ulrich Drepper, Don Dugger, Steve Ginzburg, Jon "maddog" Hall , Ron Holt, Jordan Hubbard , Dave Jensen, Kean Johnston, Andrew Josey, Robert Lipe, Bela Lubkin, Tim Marsland, Greg Page, Ronald Joe Record, Tim Ruckle, Joel Silverstein, Chia-pi Tien ve Erik Troan. Temsil edilen işletim sistemleri ve şirketler BeOS , BSDI , FreeBSD , Intel , Linux , NetBSD , SCO ve SunSoft idi .
Proje ilerledi ve 1998 yılının ortalarında SCO , OpenServer , UnixWare ve Solaris üzerinde Linux ikili dosyalarını çalıştırabilen açık kaynaklı bir uyumluluk katmanı olan lxrun'u geliştirmeye başladı . SCO , Mart 1999'da LinuxWorld'de lxrun'un resmi desteğini duyurdu . Sun Microsystems , 1999'un başlarında Solaris için lxrun'u resmi olarak desteklemeye başladı ve daha sonra Solaris Containers for Linux Applications aracılığıyla Linux ikili biçiminin entegre desteğine geçti .
Uzun süredir desteklenen Linux ikili dosyalarına (bir uyumluluk katmanı aracılığıyla ) sahip BSD'ler ve biçim için destek ekleyen ana x86 Unix satıcılarıyla birlikte proje, Linux ELF'nin endüstri tarafından seçilen biçim olduğuna karar verdi ve 25 Temmuz 1999.
FatELF: Linux için evrensel ikili dosyalar
FatELF, yağ ikili yetenekleri ekleyen bir ELF ikili biçim uzantısıdır . Linux ve diğer Unix benzeri işletim sistemlerine yöneliktir . CPU mimarisi soyutlamasına ( bayt sırası , kelime boyutu , CPU komut seti vb.) ek olarak, yazılım-platform soyutlamasının potansiyel avantajı vardır, örneğin çoklu çekirdek ABI versiyonlarını destekleyen ikili dosyalar . 2 Mart 2021 itibariyle FatELF, ana hat Linux çekirdeğine entegre edilmemiştir.
Ayrıca bakınız
- Uygulama ikili arayüzü
- Yürütülebilir dosya biçimlerinin karşılaştırılması
- DWARF – veri hatalarını ayıklamak için bir format
- Intel İkili Uyumluluk Standardı
- Taşınabilir Yürütülebilir Dosya - Windows tarafından kullanılan biçim
- vDSO – sanal DSO
- Konumdan bağımsız kod
Referanslar
daha fazla okuma
- Levine, John R. (2000) [Ekim 1999]. Bağlayıcılar ve Yükleyiciler . Yazılım Mühendisliği ve Programlamada Morgan Kaufmann Serisi (1 ed.). San Francisco, ABD: Morgan Kaufmann . ISBN'si 1-55860-496-0. OCLC 42413382 . Arşivlenen 2012-12-05 tarihinde orijinalinden . 2020-01-12 alındı .Kod: [1] [2] Hata: [3]
-
Drepper, Ulrich (2006-08-20). "Paylaşılan Kitaplıklar Nasıl Yazılır" (PDF) . 4.0 . 2007-06-20 alındı . Alıntı günlüğü gerektirir
|journal=
( yardım ) - İsimsiz bir kahraman: Çalışkan ELF , Peter Seebach, 20 Aralık 2005, 24 Şubat 2007'de orijinalinden arşivlendi
- LibElf ve GElf - Bir Kütüphane ELF dosyaları işleyin için de Wayback Machine (25 Şubat 2004 arşivlenmiş)
- ELF Nesne Dosyası Formatı: Giriş ,Eric Youngdale tarafından Diseksiyona Göre ELF Nesne Dosyası Formatı (1995-05-01)
- Brian Raiter tarafından Linux için Gerçekten Ufacık ELF Yürütülebilir Dosyaları Oluşturma Üzerine Bir Kasırga Eğitimi
- Julien Vanegue (2003-08-13) tarafından yeri değiştirilemeyen nesnelere ELF yer değiştirmesi
- ELFsh ekibi tarafından iz bırakmadan gömülü ELF hata ayıklaması (2005-08-01)
- Pat Beirne tarafından ELF yüklemesi ve yer değiştirme çalışması (1999-08-03)
Dış bağlantılar
- FreeBSD El Kitabı: İkili formatlar (arşivlenmiş versiyon)
- FreeBSD elf(5) kılavuz sayfası
- NetBSD ELF SSS
- Linux elf(5) kılavuz sayfası
- Oracle Solaris Bağlayıcı ve Kitaplıklar Kılavuzu
- ERESI projesi : ELF tabanlı işletim sistemlerinde tersine mühendislik
- Linux Today makalesi 86 , 26 Temmuz 1999'da açılıyor
- Debian'da 86open duyurusu 10 Ekim 1997, Bruce Perens'in posta listesini duyurun
- Ulrich Drepper (PDF) Beyanı içinde SCO Group vs IBM , 19 Eylül 2006
- 86open ve ELF Groklaw üzerine tartışma , 13 Ağustos 2006