निष्पादन योग्य और लिंक करने योग्य प्रारूप

From alpha
Jump to navigation Jump to search
Executable and Linkable Format
Filename extension
none, .axf, .bin, .elf, .o, .out, .prx, .puff, .ko, .mod, and .so
Magic number0x7F 'E' 'L' 'F'
Developed byUnix System Laboratories[1]: 3 
Type of formatBinary, executable, object, shared library, core dump
Container forMany executable binary formats
एक ELF फ़ाइल में दो दृश्य होते हैं: प्रोग्राम हेडर रन टाइम में उपयोग किए गए सेगमेंट को दिखाता है, जबकि सेक्शन हेडर सेक्शन के सेट को सूचीबद्ध करता है।

कम्प्यूटिंग में, निष्पादन योग्य और लिंक करने योग्य प्रारूप[2] (ईएलएफ, जिसे पहले एक्सटेंसिबल लिंकिंग फॉर्मेट नाम दिया गया था), निष्पादन योग्य फाइलों, वस्तु कोड, पुस्तकालय (कम्प्यूटिंग) और कोर निपात के लिए एक सामान्य मानक फ़ाइल प्रारूप है। सिस्टम V रिलीज़ 4 (SVR4) नाम के यूनिक्स ऑपरेटिंग सिस्टम संस्करण के अनुप्रयोग बाइनरी इंटरफ़ेस (ABI) के लिए पहले विनिर्देश में प्रकाशित,[3] और बाद में टूल इंटरफ़ेस मानक में,[1] इसे यूनिक्स सिस्टम के विभिन्न विक्रेताओं के बीच जल्दी से स्वीकार कर लिया गया। 1999 में, इसे #86open प्रोजेक्ट द्वारा x86 प्रोसेसर पर यूनिक्स और यूनिक्स जैसी प्रणालियों के लिए मानक बाइनरी फ़ाइल स्वरूप के रूप में चुना गया था।

डिजाइन के अनुसार, ईएलएफ प्रारूप लचीला, एक्स्टेंसिबल और क्रॉस-प्लेटफॉर्म है। उदाहरण के लिए, यह अलग-अलग endiannesses और एड्रेस साइज का समर्थन करता है, इसलिए यह किसी विशेष सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) या निर्देश सेट वास्तुकला को बाहर नहीं करता है। इसने इसे कई अलग-अलग हार्डवेयर कम्प्यूटिंग मंच पर कई अलग-अलग ऑपरेटिंग सिस्टमों द्वारा अपनाने की अनुमति दी है।

फ़ाइल लेआउट

प्रत्येक ELF फ़ाइल एक ELF हेडर से बनी होती है, जिसके बाद फ़ाइल डेटा होता है। डेटा में शामिल हो सकते हैं:

  • प्रोग्राम हेडर टेबल, शून्य या अधिक स्मृति विभाजन का वर्णन करता है
  • सेक्शन हेडर टेबल, शून्य या अधिक सेक्शन का वर्णन करता है
  • प्रोग्राम हेडर टेबल या सेक्शन हेडर टेबल में प्रविष्टियों द्वारा संदर्भित डेटा
हाइलाइट की गई प्रमुख प्रविष्टियों वाली ELF फ़ाइल की संरचना

खंडों में वह जानकारी होती है जो रन टाइम (कार्यक्रम जीवनचक्र चरण) फ़ाइल के निष्पादन के लिए आवश्यक होती है, जबकि अनुभागों में लिंकिंग और स्थानांतरण के लिए महत्वपूर्ण डेटा होता है। संपूर्ण फ़ाइल में कोई भी बाइट अधिकतम एक अनुभाग के स्वामित्व में हो सकता है, और ऑर्फ़न बाइट्स हो सकते हैं जो किसी भी अनुभाग के स्वामित्व में नहीं हैं।

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@.....|

Example hexdump of ELF file header[4]


फाइल हेडर

ईएलएफ हेडर परिभाषित करता है कि 32-बिट कंप्यूटिंग | 32-बिट या 64-बिट कंप्यूटिंग | 64-बिट पतों का उपयोग करना है या नहीं। हेडर में तीन फ़ील्ड होते हैं जो इस सेटिंग से प्रभावित होते हैं और अन्य फ़ील्ड को ऑफ़सेट करते हैं जो उनका अनुसरण करते हैं। ईएलएफ हेडर क्रमशः 32-बिट और 64-बिट बाइनरी के लिए 52 या 64 बाइट लंबा है।

ELF header[5]
Offset Size (bytes) Field Purpose
32-bit 64-bit 32-bit 64-bit
0x00 4 e_ident[EI_MAG0] through e_ident[EI_MAG3] 0x7F followed by ELF(45 4c 46) in ASCII; these four bytes constitute the magic number.
0x04 1 e_ident[EI_CLASS] This byte is set to either 1 or 2 to signify 32- or 64-bit format, respectively.
0x05 1 e_ident[EI_DATA] This byte is set to either 1 or 2 to signify little or big endianness, respectively. This affects interpretation of multi-byte fields starting with offset 0x10.
0x06 1 e_ident[EI_VERSION] Set to 1 for the original and current version of ELF.
0x07 1 e_ident[EI_OSABI] Identifies the target operating system ABI.
Value ABI
0x00 System V
0x01 HP-UX
0x02 NetBSD
0x03 Linux
0x04 GNU Hurd
0x06 Solaris
0x07 AIX (Monterey)
0x08 IRIX
0x09 FreeBSD
0x0A Tru64
0x0B Novell Modesto
0x0C OpenBSD
0x0D OpenVMS
0x0E NonStop Kernel
0x0F AROS
0x10 FenixOS
0x11 Nuxi CloudABI
0x12 Stratus Technologies OpenVOS
0x08 1 e_ident[EI_ABIVERSION] एबीआई संस्करण को और निर्दिष्ट करता है। इसकी व्याख्या लक्ष्य ABI पर निर्भर करती है। लिनक्स कर्नेल (कम से कम 2.6 के बाद) की कोई परिभाषा नहीं है,[6] इसलिए इसे स्टैटिकली-लिंक्ड एक्ज़ीक्यूटेबल्स के लिए नज़रअंदाज़ कर दिया जाता है। उस स्थिति में, EI_PAD का ऑफ़सेट और आकार होता है 8.

glibc 2.12+ मामले में e_ident[EI_OSABI] == 3 इस क्षेत्र को गतिशील लिंकर के ABI संस्करण के रूप में मानता है:[7] यह डायनेमिक लिंकर की विशेषताओं की एक सूची को परिभाषित करता है,[8] व्यवहार करता है e_ident[EI_ABIVERSION] साझा वस्तु (निष्पादन योग्य या गतिशील पुस्तकालय) द्वारा अनुरोधित सुविधा स्तर के रूप में और अज्ञात सुविधा का अनुरोध करने पर इसे लोड करने से इंकार कर दिया जाता है, यानी। e_ident[EI_ABIVERSION] सबसे बड़ी ज्ञात विशेषता से अधिक है।[9]

0x09 7 e_ident[EI_PAD] आरक्षित पैडिंग बाइट। वर्तमान में अप्रयुक्त। शून्य से भरा जाना चाहिए और पढ़ने पर ध्यान नहीं देना चाहिए।
0x10 2 e_type ऑब्जेक्ट फ़ाइल प्रकार की पहचान करता है।
Value Type Meaning
0x00 ET_NONE Unknown.
0x01 ET_REL Relocatable file.
0x02 ET_EXEC Executable file.
0x03 ET_DYN Shared object.
0x04 ET_CORE Core file.
0xFE00 ET_LOOS Reserved inclusive range. Operating system specific.
0xFEFF ET_HIOS
0xFF00 ET_LOPROC Reserved inclusive range. Processor specific.
0xFFFF ET_HIPROC
|-
0x12 2 e_machine

. कुछ उदाहरण निम्न हैं:

Value ISA
0x00 No specific instruction set
0x01 AT&T WE 32100
0x02 SPARC
0x03 x86
0x04 Motorola 68000 (M68k)
0x05 Motorola 88000 (M88k)
0x06 Intel MCU
0x07 Intel 80860
0x08 MIPS
0x09 IBM System/370
0x0A MIPS RS3000 Little-endian
0x0B - 0x0D Reserved for future use
0x0E Hewlett-Packard PA-RISC
0x0F Reserved for future use
0x13 Intel 80960
0x14 PowerPC
0x15 PowerPC (64-bit)
0x16 S390, including S390x
0x17 IBM SPU/SPC
0x18 - 0x23 Reserved for future use
0x24 NEC V800
0x25 Fujitsu FR20
0x26 TRW RH-32
0x27 Motorola RCE
0x28 Arm (up to Armv7/AArch32)
0x29 Digital Alpha
0x2A SuperH
0x2B SPARC Version 9
0x2C Siemens TriCore embedded processor
0x2D Argonaut RISC Core
0x2E Hitachi H8/300
0x2F Hitachi H8/300H
0x30 Hitachi H8S
0x31 Hitachi H8/500
0x32 IA-64
0x33 Stanford MIPS-X
0x34 Motorola ColdFire
0x35 Motorola M68HC12
0x36 Fujitsu MMA Multimedia Accelerator
0x37 Siemens PCP
0x38 Sony nCPU embedded RISC processor
0x39 Denso NDR1 microprocessor
0x3A Motorola Star*Core processor
0x3B Toyota ME16 processor
0x3C STMicroelectronics ST100 processor
0x3D Advanced Logic Corp. TinyJ embedded processor family
0x3E AMD x86-64
0x3F Sony DSP Processor
0x40 Digital Equipment Corp. PDP-10
0x41 Digital Equipment Corp. PDP-11
0x42 Siemens FX66 microcontroller
0x43 STMicroelectronics ST9+ 8/16 bit microcontroller
0x44 STMicroelectronics ST7 8-bit microcontroller
0x45 Motorola MC68HC16 Microcontroller
0x46 Motorola MC68HC11 Microcontroller
0x47 Motorola MC68HC08 Microcontroller
0x48 Motorola MC68HC05 Microcontroller
0x49 Silicon Graphics SVx
0x4A STMicroelectronics ST19 8-bit microcontroller
0x4B Digital VAX
0x4C Axis Communications 32-bit embedded processor
0x4D Infineon Technologies 32-bit embedded processor
0x4E Element 14 64-bit DSP Processor
0x4F LSI Logic 16-bit DSP Processor
0x8C TMS320C6000 Family
0xAF MCST Elbrus e2k
0xB7 Arm 64-bits (Armv8/AArch64)
0xDC Zilog Z80
0xF3 RISC-V
0xF7 Berkeley Packet Filter
0x101 WDC 65C816
0x14 4 e_version पर सेट करें 1 ईएलएफ के मूल संस्करण के लिए।
0x18 4 8 e_entry

जहां से प्रक्रिया का निष्पादन शुरू होता है। यह फ़ील्ड पहले परिभाषित प्रारूप (बाइट 0x04) के आधार पर या तो 32 या 64 बिट लंबा है। अगर फ़ाइल में कोई संबद्ध प्रविष्टि बिंदु नहीं है, तो यह शून्य रखता है।

0x1C 0x20 4 8 e_phoff प्रोग्राम हेडर टेबल के शुरू होने की ओर इशारा करता है। यह आम तौर पर फ़ाइल शीर्षलेख का पालन करता है, जिसके तुरंत बाद ऑफसेट होता है 0x34 या 0x40 क्रमशः 32- और 64-बिट ईएलएफ निष्पादकों के लिए।
0x20 0x28 4 8 e_shoff सेक्शन हेडर टेबल के शुरू होने की ओर इशारा करता है।
0x24 0x30 4 e_flags इस क्षेत्र की व्याख्या लक्ष्य संरचना पर निर्भर करती है।
0x28 0x34 2 e_ehsize इस हेडर का आकार समाहित करता है, आमतौर पर 64-बिट के लिए 64 बाइट्स और 32-बिट प्रारूप के लिए 52 बाइट्स।
0x2ए 0x36 2 e_phentsize इसमें प्रोग्राम हेडर टेबल एंट्री का आकार होता है।
0x2C 0x38 2 e_phnum प्रोग्राम हेडर तालिका में प्रविष्टियों की संख्या समाहित करता है।
0x2E 0x3ए 2 e_shentsize इसमें सेक्शन हेडर टेबल एंट्री का आकार होता है।
0x30 0x3C 2 e_shnum सेक्शन हेडर टेबल में प्रविष्टियों की संख्या शामिल है।
0x32 0x3E 2 e_shstrndx इसमें सेक्शन हेडर टेबल एंट्री का इंडेक्स होता है जिसमें सेक्शन के नाम होते हैं।
0x34 0x40 ईएलएफ हैडर (आकार) का अंत।

प्रोग्राम हेडर

प्रोग्राम हेडर टेबल सिस्टम को बताता है कि प्रोसेस इमेज कैसे बनाई जाती है। यह फ़ाइल ऑफ़सेट पर पाया जाता है e_phoff, और शामिल हैं e_phnum प्रविष्टियाँ, प्रत्येक आकार के साथ e_phentsize. 32-बिट ईएलएफ बनाम 64-बिट ईएलएफ में लेआउट थोड़ा अलग है, क्योंकि p_flags संरेखण कारणों से एक अलग संरचना स्थान में हैं। प्रत्येक प्रविष्टि को इस प्रकार संरचित किया गया है:

Program header[10]
Offset Size (bytes) Field Purpose
32-bit 64-bit 32-bit 64-bit
0x00 4 p_type Identifies the type of the segment.
Value Name Meaning
0x00000000 PT_NULL Program header table entry unused.
0x00000001 PT_LOAD Loadable segment.
0x00000002 PT_DYNAMIC Dynamic linking information.
0x00000003 PT_INTERP Interpreter information.
0x00000004 PT_NOTE Auxiliary information.
0x00000005 PT_SHLIB Reserved.
0x00000006 PT_PHDR Segment containing program header table itself.
0x00000007 PT_TLS Thread-Local Storage template.
0x60000000 PT_LOOS Reserved inclusive range. Operating system specific.
0x6FFFFFFF PT_HIOS
0x70000000 PT_LOPROC Reserved inclusive range. Processor specific.
0x7FFFFFFF PT_HIPROC
0x04 4 p_flags खंड-निर्भर झंडे (64-बिट संरचना के लिए स्थिति)।
0x04 0x08 4 8 p_offsetफ़ाइल छवि में खंड का ऑफसेट।
0x08 0x10 4 8 p_vaddr स्मृति में खंड का आभासी पता।
0x0C 0x18 4 8 p_paddr उन सिस्टम्स पर जहां भौतिक पता प्रासंगिक है, खंड के भौतिक पते के लिए आरक्षित है।
0x10 0x20 4 8 p_filesz फ़ाइल छवि में खंड के बाइट्स में आकार। 0 हो सकता है।
0x14 0x28 4 8 p_memsz स्मृति में खंड के बाइट्स में आकार। 0 हो सकता है।
0x18 4 p_flags खंड-निर्भर झंडे (32-बिट संरचना के लिए स्थिति)।
0x1C 0x30 4 8 p_align 0 और 1 कोई संरेखण निर्दिष्ट करें। अन्यथा 2 की सकारात्मक, अभिन्न शक्ति होनी चाहिए p_vaddr बराबरी करना p_offset मापांक p_align.
0x20 0x38 प्रोग्राम हेडर का अंत (आकार)।

सेक्शन हेडर

Offset Size (bytes) Field Purpose
32-bit 64-bit 32-bit 64-bit
0x00 4 sh_name An offset to a string in the .shstrtab section that represents the name of this section.
0x04 4 sh_type Identifies the type of this header.
Value Name Meaning
0x0 SHT_NULL Section header table entry unused
0x1 SHT_PROGBITS Program data
0x2 SHT_SYMTAB Symbol table
0x3 SHT_STRTAB String table
0x4 SHT_RELA Relocation entries with addends
0x5 SHT_HASH Symbol hash table
0x6 SHT_DYNAMIC Dynamic linking information
0x7 SHT_NOTE Notes
0x8 SHT_NOBITS Program space with no data (bss)
0x9 SHT_REL Relocation entries, no addends
0x0A SHT_SHLIB Reserved
0x0B SHT_DYNSYM Dynamic linker symbol table
0x0E SHT_INIT_ARRAY Array of constructors
0x0F SHT_FINI_ARRAY Array of destructors
0x10 SHT_PREINIT_ARRAY Array of pre-constructors
0x11 SHT_GROUP Section group
0x12 SHT_SYMTAB_SHNDX Extended section indices
0x13 SHT_NUM Number of defined types.
0x60000000 SHT_LOOS Start OS-specific.
... ... ...
0x08 4 8 sh_flags अनुभाग की विशेषताओं की पहचान करता है।
Value Name Meaning
0x1 SHF_WRITE Writable
0x2 SHF_ALLOC Occupies memory during execution
0x4 SHF_EXECINSTR Executable
0x10 SHF_MERGE Might be merged
0x20 SHF_STRINGS Contains null-terminated strings
0x40 SHF_INFO_LINK 'sh_info' contains SHT index
0x80 SHF_LINK_ORDER Preserve order after combining
0x100 SHF_OS_NONCONFORMING Non-standard OS specific handling required
0x200 SHF_GROUP Section is member of a group
0x400 SHF_TLS Section hold thread-local data
0x0FF00000 SHF_MASKOS OS-specific
0xF0000000 SHF_MASKPROC Processor-specific
0x4000000 SHF_ORDERED Special ordering requirement (Solaris)
0x8000000 SHF_EXCLUDE Section is excluded unless referenced or allocated (Solaris)
0x0सी 0x10 4 8 sh_addr मेमोरी में सेक्शन का वर्चुअल पता, लोड किए गए सेक्शन के लिए.
0x10 0x18 4 8 sh_offset फ़ाइल इमेज में सेक्शन का ऑफ़सेट।
0x14 0x20 4 8 sh_size फ़ाइल छवि में अनुभाग के बाइट्स में आकार। 0 हो सकता है।
0x18 0x28 4 sh_link इसमें संबद्ध अनुभाग का अनुभाग अनुक्रमणिका शामिल है। अनुभाग के प्रकार के आधार पर, इस फ़ील्ड का उपयोग कई उद्देश्यों के लिए किया जाता है।
0x1सी 0x2सी 4 sh_info अनुभाग के बारे में अतिरिक्त जानकारी शामिल है। अनुभाग के प्रकार के आधार पर, इस फ़ील्ड का उपयोग कई उद्देश्यों के लिए किया जाता है।
0x20 0x30 4 8 sh_addralign अनुभाग का आवश्यक संरेखण शामिल है। यह क्षेत्र दो की शक्ति होना चाहिए।
0x24 0x38 4 8 sh_entsize प्रत्येक प्रविष्टि का आकार बाइट्स में होता है, उन अनुभागों के लिए जिनमें निश्चित-आकार की प्रविष्टियाँ होती हैं। अन्यथा, इस फ़ील्ड में शून्य है।
0x28 0x40 सेक्शन हैडर का अंत (आकार).

उपकरण

  • readelf एक यूनिक्स बाइनरी उपयोगिता है जो एक या अधिक ईएलएफ फाइलों के बारे में जानकारी प्रदर्शित करती है। जीएनयू बिनुटिल्स द्वारा एक मुफ्त सॉफ्टवेयर कार्यान्वयन प्रदान किया जाता है।
  • elfutils जीएनयू बिनुटिल्स को पूरी तरह से लिनक्स के लिए वैकल्पिक उपकरण प्रदान करता है।[11]
  • elfdump Solaris और FreeBSD के अंतर्गत उपलब्ध ELF फ़ाइल में ELF जानकारी देखने के लिए एक कमांड है।
  • objdump ईएलएफ फाइलों और अन्य ऑब्जेक्ट प्रारूपों के बारे में विस्तृत जानकारी प्रदान करता है। objdump ईएलएफ डेटा की संरचना के लिए बाइनरी फाइल डिस्क्रिप्टर लाइब्रेरी को बैक-एंड के रूप में उपयोग करता है।
  • यूनिक्स file उपयोगिता ईएलएफ फाइलों के बारे में कुछ जानकारी प्रदर्शित कर सकती है, जिसमें निर्देश सेट आर्किटेक्चर शामिल है जिसके लिए एक स्थानांतरित करने योग्य, निष्पादन योग्य, या साझा ऑब्जेक्ट फ़ाइल में कोड का इरादा है, या जिस पर ईएलएफ कोर डंप का उत्पादन किया गया था।

अनुप्रयोग

यूनिक्स जैसी प्रणाली

ईएलएफ प्रारूप ने विभिन्न वातावरणों में पुराने निष्पादन योग्य स्वरूपों को बदल दिया है। इसने यूनिक्स जैसे ऑपरेटिंग सिस्टम में a.out और COFF स्वरूपों को बदल दिया है:


गैर-यूनिक्स गोद लेने

ईएलएफ ने गैर-यूनिक्स ऑपरेटिंग सिस्टम में कुछ अपनाने को भी देखा है, जैसे कि:

Microsoft Windows भी ELF प्रारूप का उपयोग करता है, लेकिन केवल Linux संगतता प्रणाली के लिए अपने Windows सबसिस्टम के लिए।[17]


गेम कंसोल

कुछ गेम कंसोल ईएलएफ का भी उपयोग करते हैं:

पावरपीसी

PowerPC पर चल रहे अन्य (ऑपरेटिंग) सिस्टम जो ELF का उपयोग करते हैं:

मोबाइल फोन

मोबाइल फोन और मोबाइल उपकरणों के लिए कुछ ऑपरेटिंग सिस्टम ईएलएफ का उपयोग करते हैं:

कुछ फोन एक पैच (कंप्यूटिंग) के उपयोग के माध्यम से ईएलएफ फाइलों को चला सकते हैं जो विधानसभा भाषा को मुख्य फर्मवेयर में जोड़ता है, जो कि भूमिगत मॉडिंग संस्कृति में ईएलएफपैक के रूप में जाना जाता है। ELF फ़ाइल स्वरूप का उपयोग Atmel AVR (8-बिट), AVR32 के साथ भी किया जाता है[21] और टेक्सस उपकरण MSP430 माइक्रोकंट्रोलर आर्किटेक्चर के साथ। फर्मवेयर खोलें के कुछ कार्यान्वयन ELF फ़ाइलों को भी लोड कर सकते हैं, विशेष रूप से Apple Inc. के कार्यान्वयन का उपयोग कंपनी द्वारा उत्पादित लगभग सभी PowerPC मशीनों में किया जाता है।

निर्दिष्टीकरण

लिनक्स मानक आधार (एलएसबी) आर्किटेक्चर के लिए उपरोक्त विनिर्देशों में से कुछ को पूरक करता है जिसमें यह निर्दिष्ट है।[22] उदाहरण के लिए, सिस्टम V ABI, AMD64 सप्लीमेंट के लिए यही स्थिति है।[23][24]


86 ओपन

86ओपन एक सामान्य पीसी संगत x86 आर्किटेक्चर पर यूनिक्स और यूनिक्स जैसी ऑपरेटिंग सिस्टम के लिए एक सामान्य बाइनरी फ़ाइल प्रारूप पर आम सहमति बनाने के लिए एक परियोजना थी, ताकि सॉफ़्टवेयर डेवलपर्स को आर्किटेक्चर को पोर्ट करने के लिए प्रोत्साहित किया जा सके।[25] प्रारंभिक विचार विशिष्टता 1170 के एक छोटे उपसमुच्चय, एकल यूनिक्स विशिष्टता के एक पूर्ववर्ती, और जीएनयू सी लाइब्रेरी (ग्लिबैक) पर मानकीकरण करना था ताकि अनमॉडिफाइड बायनेरिज़ को x86 यूनिक्स-जैसे ऑपरेटिंग सिस्टम पर चलाने के लिए सक्षम किया जा सके। परियोजना को मूल रूप से विशिष्ट 150 नामित किया गया था।

अंततः चुना गया प्रारूप ईएलएफ था, विशेष रूप से ईएलएफ के लिनक्स कार्यान्वयन के बाद, यह सभी शामिल विक्रेताओं और ऑपरेटिंग सिस्टम द्वारा समर्थित वास्तविक मानक बन गया था।

समूह ने 1997 में ईमेल चर्चा शुरू की और पहली बार 22 अगस्त, 1997 को सांता क्रूज़ ऑपरेशन कार्यालयों में एक साथ मिले।

संचालन समिति में मार्क इविंग, डायोन जॉनसन, इवान लीबोविच, ब्रूस पेरेन्स, एंड्रयू रोच, ब्रायन वेन स्पार्क्स और लिनस टोरवाल्ड्स थे। परियोजना के अन्य लोग थे कीथ बायोस्टिक (सॉफ्टवेयर इंजीनियर), चक क्रैनर, माइकल डेविडसन, क्रिस जी डेमेट्रियौ, उलरिच ड्रेपर, डॉन डगर, स्टीव गिन्ज़बर्ग, जॉन मैडॉग हॉल, रॉन होल्ट, जॉर्डन हबर्ड, डेव जेन्सेन, कीन जॉनसन, एंड्रयू जोसी, रॉबर्ट लिप, बेला लुबकिन, टिम मार्सलैंड, ग्रेग पेज, रोनाल्ड जो रिकॉर्ड, टिम रूकल, जोएल सिल्वरस्टीन, चिया-पी टिएन और एरिक ट्रोएन। ऑपरेटिंग सिस्टम और कंपनियों का प्रतिनिधित्व बीओएस, बीएसडीआई, फ्रीबीएसडी, इंटेल, लिनक्स, नेटबीएसडी, सांता क्रूज़ ऑपरेशन और सन माइक्रोसिस्टम्स थे।

परियोजना आगे बढ़ी और 1998 के मध्य में, SCO ने lxrun का विकास करना शुरू किया, एक ओपन-सोर्स संगतता परत जो OpenServer, UnixWare, और Solaris (ऑपरेटिंग सिस्टम) पर Linux बायनेरिज़ चलाने में सक्षम थी। SCO ने मार्च 1999 में LinuxWorld सम्मेलन और एक्सपो में lxrun के आधिकारिक समर्थन की घोषणा की। सन माइक्रोसिस्टम्स ने आधिकारिक तौर पर 1999 की शुरुआत में Solaris के लिए lxrun का समर्थन करना शुरू किया,[26] और बाद में लिनक्स अनुप्रयोगों के लिए सोलारिस कंटेनरों के माध्यम से लिनक्स बाइनरी प्रारूप के एकीकृत समर्थन में ले जाया गया।

बीएसडी के पास लंबे समय से लिनक्स बायनेरिज़ (एक अनुकूलता परत के माध्यम से) और मुख्य x86 यूनिक्स विक्रेताओं के प्रारूप के लिए अतिरिक्त समर्थन होने के कारण, परियोजना ने फैसला किया कि लिनक्स ईएलएफ उद्योग द्वारा चुना गया प्रारूप था और घोषित [डी] खुद को 25 जुलाई को भंग कर दिया , 1999।[27]


FatELF: लिनक्स के लिए यूनिवर्सल बायनेरिज़

FatELF एक ELF बाइनरी-फॉर्मेट एक्सटेंशन है जो मोटा बाइनरी क्षमताओं को जोड़ता है।[28] यह लिनक्स और अन्य यूनिक्स जैसे ऑपरेटिंग सिस्टम के लिए लक्षित है। CPU आर्किटेक्चर एब्स्ट्रैक्शन (बाइट क्रम, शब्द का आकार, सीपीयू निर्देश समुच्चय आदि) के अतिरिक्त, सॉफ्टवेयर-प्लेटफॉर्म एब्स्ट्रैक्शन का संभावित लाभ है, उदाहरण के लिए, बायनेरिज़ जो कई कर्नेल एप्लिकेशन बाइनरी इंटरफ़ेस संस्करणों का समर्थन करते हैं। As of 2021, FatELF को मेनलाइन Linux कर्नेल में एकीकृत नहीं किया गया है।[29][30][31]


यह भी देखें

संदर्भ

  1. 1.0 1.1 Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 (May 1995)
  2. Tool Interface Standard (TIS) Portable Formats Specification Version 1.1 (October 1993)
  3. System V Application Binary Interface Edition 4.1 (1997-03-18)
  4. "Available lexers — Pygments". pygments.org.
  5. "ELF Header". Sco.com. July 2000. Retrieved 2014-02-07.
  6. "LXR linux/include/linux/elf.h". linux.no. Retrieved 27 April 2015.
  7. "glibc 2.12 announce".
  8. "sourceware.org Git - glibc.git/blob - libc-abis".
  9. "sourceware.org Git - glibc.git/blob - sysdeps/gnu/ldsodefs.h".
  10. "Program Header". Sco.com. July 2000. Retrieved 2017-04-05.
  11. "elfutil". sourceware.org. Retrieved 30 April 2017.
  12. "Binary Formats".
  13. "MinixReleases – Minix Wiki". Wiki.minix3.org. Archived from the original on 2013-03-30. Retrieved 2014-01-19.
  14. "Archived copy" (PDF). Archived from the original (PDF) on 2020-09-15. Retrieved 2016-10-19.{{cite web}}: CS1 maint: archived copy as title (link)
  15. "GCCSDK – RISC OS". Riscos.info. 2012-04-22. Retrieved 2014-01-19.
  16. "Guardian Programmer's Guide" (PDF). Hewlett Packard Enterprise. Archived from the original (PDF) on 2018-05-30. Retrieved 2018-05-30. p. 44 archived from the original Archived 2018-05-30 at the Wayback Machine on 2018-5-30
  17. Foley, Mary Jo. "Under the hood of Microsoft's Windows Subsystem for Linux | ZDNet". ZDNet. Retrieved 2016-08-19.
  18. PlayStation Portable use encrypted & relocated ELF : PSP
  19. Symbian OS executable file format
  20. Rosen, Kenneth; Host, Douglas; Klee, Rachel; Rosinski, Richard (2007). UNIX: The Complete Reference (2 ed.). McGraw Hill Professional. p. 707. ISBN 9780071706988. Retrieved 2017-06-08. Dynamically linked libraries are also called shared objects (.so).
  21. "Chapter 4: Object Files", System V Application Binary Interface, 2009-10-26, e_machine
  22. "LSB Referenced Specifications". linuxfoundation.org. Retrieved 27 April 2015.
  23. "Executable and Linking Format (ELF)". linuxfoundation.org. Retrieved 27 April 2015.
  24. "परिचय". linuxfoundation.org. Retrieved 27 April 2015.
  25. Leibovitch, Evan (1997-12-23). "86Open Frequently-Asked Questions". Archived from the original on 2007-03-11. Retrieved 2007-06-06.
  26. Record, Ronald (1998-05-21). "Bulletin on status of 86open at SCO". Archived from the original on 2008-12-08. Retrieved 2008-05-06.
  27. Leibovitch, Evan (1999-07-25). "The86open Project – Final Update". Archived from the original on 2007-02-27. Retrieved 2007-05-06.
  28. Gordon, Ryan. "fatelf-specification v1". icculus.org. Retrieved 2010-07-25.
  29. Gordon, Ryan. "FatELF: Turns out I liked the uncertainty better". icculus.org. Retrieved 2010-07-13.
  30. Holwerda, Thom (2009-11-03). "Ryan Gordon Halts FatELF Project". osnews.com. Retrieved 2010-07-05.
  31. Brockmeier, Joe (June 23, 2010). "SELF: Anatomy of an (alleged) failure". Linux Weekly News. Retrieved 2011-02-06.


अग्रिम पठन


बाहरी संबंध