निष्पादन योग्य और लिंक करने योग्य प्रारूप
Filename extension |
none, .axf, .bin, .elf, .o, .out, .prx, .puff, .ko, .mod, and .so |
---|---|
Magic number | 0x7F 'E' 'L' 'F' |
Developed by | Unix System Laboratories[1]: 3 |
Type of format | Binary, executable, object, shared library, core dump |
Container for | Many executable binary formats |
कम्प्यूटिंग में, निष्पादन योग्य और लिंक करने योग्य प्रारूप[2] (ईएलएफ, जिसे पहले एक्सटेंसिबल लिंकिंग फॉर्मेट नाम दिया गया था), निष्पादन योग्य फाइलों, वस्तु कोड, पुस्तकालय (कम्प्यूटिंग) और कोर निपात के लिए एक सामान्य मानक फ़ाइल प्रारूप है। सिस्टम V रिलीज़ 4 (SVR4) नाम के यूनिक्स ऑपरेटिंग सिस्टम संस्करण के अनुप्रयोग बाइनरी इंटरफ़ेस (ABI) के लिए पहले विनिर्देश में प्रकाशित,[3] और बाद में टूल इंटरफ़ेस मानक में,[1] इसे यूनिक्स सिस्टम के विभिन्न विक्रेताओं के बीच जल्दी से स्वीकार कर लिया गया। 1999 में, इसे #86open प्रोजेक्ट द्वारा x86 प्रोसेसर पर यूनिक्स और यूनिक्स जैसी प्रणालियों के लिए मानक बाइनरी फ़ाइल स्वरूप के रूप में चुना गया था।
डिजाइन के अनुसार, ईएलएफ प्रारूप लचीला, एक्स्टेंसिबल और क्रॉस-प्लेटफॉर्म है। उदाहरण के लिए, यह अलग-अलग endiannesses और एड्रेस साइज का समर्थन करता है, इसलिए यह किसी विशेष सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) या निर्देश सेट वास्तुकला को बाहर नहीं करता है। इसने इसे कई अलग-अलग हार्डवेयर कम्प्यूटिंग मंच पर कई अलग-अलग ऑपरेटिंग सिस्टमों द्वारा अपनाने की अनुमति दी है।
फ़ाइल लेआउट
प्रत्येक 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 बाइट लंबा है।
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.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | ऑब्जेक्ट फ़ाइल प्रकार की पहचान करता है।
|
0x12 | 2 | e_machine
. कुछ उदाहरण निम्न हैं:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 संरेखण कारणों से एक अलग संरचना स्थान में हैं। प्रत्येक प्रविष्टि को इस प्रकार संरचित किया गया है:
Offset | Size (bytes) | Field | Purpose | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
32-bit | 64-bit | 32-bit | 64-bit | |||||||||||||||||||||||||||||||||||||||
0x00 | 4 | p_type | Identifies the type of the segment.
| |||||||||||||||||||||||||||||||||||||||
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.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0x08 | 4 | 8 | sh_flags | अनुभाग की विशेषताओं की पहचान करता है।
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 स्वरूपों को बदल दिया है:
- लिनक्स
- सोलारिस (ऑपरेटिंग सिस्टम) / इलुमोस
- IRIX
- फ्रीबीएसडी[12]
- नेटबीएसडी
- ओपनबीएसडी
- रिडॉक्स (ऑपरेटिंग सिस्टम)
- ड्रैगनफली बीएसडी
- शब्दांश डेस्कटॉप (ऑपरेटिंग सिस्टम)
- एचपी-यूएक्स (32-बिट पीए-आरआईएससी प्रोग्राम को छोड़कर जो सिस्टम ऑब्जेक्ट मॉडल (फाइल फॉर्मेट) का उपयोग करना जारी रखते हैं)
- क्यूएनएक्स न्यूट्रिनो
- मिनिक्स[13]
गैर-यूनिक्स गोद लेने
ईएलएफ ने गैर-यूनिक्स ऑपरेटिंग सिस्टम में कुछ अपनाने को भी देखा है, जैसे कि:
- OpenVMS, इसके इटेनियम और amd64 संस्करणों में[14]
- BeOS संशोधन 4 और बाद में x86 आधारित कंप्यूटरों के लिए (जहां इसने पोर्टेबल निष्पादन योग्य प्रारूप को बदल दिया; PowerPC संस्करण पसंदीदा निष्पादन योग्य प्रारूप के साथ रहा)
- हाइकू (ऑपरेटिंग सिस्टम), बीओएस का एक खुला स्रोत पुनर्कार्यान्वयन
- जोखिम[15]
- परत आप, पीए-आरआईएससी और x86 संस्करणों में
- स्काईओएस
- फुकिया ओएस
- जेड/टीपीएफ
- नॉनस्टॉप (सर्वर कंप्यूटर)[16]
- डीडीसी-I
Microsoft Windows भी ELF प्रारूप का उपयोग करता है, लेकिन केवल Linux संगतता प्रणाली के लिए अपने Windows सबसिस्टम के लिए।[17]
गेम कंसोल
कुछ गेम कंसोल ईएलएफ का भी उपयोग करते हैं:
- प्लेस्टेशन पोर्टेबल,[18] प्लेस्टेशन डब्ल्यूआईआईटा, प्लेस्टेशन (कंसोल), प्लेस्टेशन 2, प्लेस्टेशन 3, प्लेस्टेशन 4, प्लेस्टेशन 5
- GP2X
- कलाकारों का सपना
- खेल घन
- निन्टेंडो 64
- वाई
- Wii यू
पावरपीसी
PowerPC पर चल रहे अन्य (ऑपरेटिंग) सिस्टम जो ELF का उपयोग करते हैं:
- AmigaOS 4, ELF निष्पादन योग्य ने पूर्व विस्तारित हंक प्रारूप (EHF) को बदल दिया है जिसका उपयोग PPC प्रोसेसर विस्तार कार्ड से लैस Amigas पर किया गया था।
- मॉर्फोस
- एआरओएस रिसर्च ऑपरेटिंग सिस्टम
- कैफे ओएस (ऑपरेटिंग सिस्टम Wii U पर चलता था)
मोबाइल फोन
मोबाइल फोन और मोबाइल उपकरणों के लिए कुछ ऑपरेटिंग सिस्टम ईएलएफ का उपयोग करते हैं:
- सिम्बियन OS v9 E32Image का उपयोग करता है[19] प्रारूप जो ईएलएफ फ़ाइल प्रारूप पर आधारित है;
- सोनी एरिक्सन, उदाहरण के लिए, सोनी एरिक्सन W800, सोनी एरिक्सन W610i, सोनी एरिक्सन W300, आदि।
- सीमेंस, SGOLD और SGOLD2 प्लेटफॉर्म: Siemens C65 से S75 और BenQ-Siemens E71/BenQ-Siemens EL71;
- MOTOROLA, उदाहरण के लिए, E398, Motorola SLVR L7, v360, Motorola RAZR V3#V3i (और सभी फोन LTE2 जिसमें पैच लगाया गया है)।
- बादा, उदाहरण के लिए, सैमसंग वेव S8500।
- मेमो या मीगो ओएस चलाने वाले नोकिया फोन या टैबलेट, उदाहरण के लिए, नोकिया N900।
- Android (ऑपरेटिंग सिस्टम) ELF का उपयोग करता है .so (साझा वस्तु[20]) जावा मूल इंटरफ़ेस के लिए पुस्तकालय। एंड्रॉइड रनटाइम (एआरटी) के साथ, लॉलीपॉप (ऑपरेटिंग सिस्टम) के बाद से डिफ़ॉल्ट | एंड्रॉइड 5.0 लॉलीपॉप, सभी एप्लिकेशन इंस्टॉलेशन पर देशी ईएलएफ बायनेरिज़ में संकलित किए जाते हैं।
कुछ फोन एक पैच (कंप्यूटिंग) के उपयोग के माध्यम से ईएलएफ फाइलों को चला सकते हैं जो विधानसभा भाषा को मुख्य फर्मवेयर में जोड़ता है, जो कि भूमिगत मॉडिंग संस्कृति में ईएलएफपैक के रूप में जाना जाता है। ELF फ़ाइल स्वरूप का उपयोग Atmel AVR (8-बिट), AVR32 के साथ भी किया जाता है[21] और टेक्सस उपकरण MSP430 माइक्रोकंट्रोलर आर्किटेक्चर के साथ। फर्मवेयर खोलें के कुछ कार्यान्वयन ELF फ़ाइलों को भी लोड कर सकते हैं, विशेष रूप से Apple Inc. के कार्यान्वयन का उपयोग कंपनी द्वारा उत्पादित लगभग सभी PowerPC मशीनों में किया जाता है।
निर्दिष्टीकरण
- सामान्य:
- सिस्टम V एप्लिकेशन बाइनरी इंटरफ़ेस संस्करण 4.1 (1997-03-18)
- सिस्टम V ABI अपडेट (अक्टूबर 2009)
- एएमडीएसएचसीएच:
- एआरएम वास्तुकला परिवार:
- एमआईपीएस आर्किटेक्चर के लिए ELF
- आईए-32:
- आइए-64:
- इटेनियम सॉफ्टवेयर कन्वेंशन और रनटाइम गाइड (सितंबर 2000)
- M32R:
- M32R ELF ABI सप्लीमेंट संस्करण 1.2 (2004-08-26)
- एमआईपीएस वास्तुकला:
- मोटोरोला 6800:
- पीए-आरआईएससी:
- PA-RISC के लिए ELF सप्लीमेंट संस्करण 1.43 (6 अक्टूबर, 1997)
- पावरपीसी:
- सिस्टम V ABI, PPC सप्लीमेंट
- PowerPC एंबेडेड एप्लिकेशन बाइनरी इंटरफ़ेस 32-बिट कार्यान्वयन (1995-10-01)
- 64-बिट PowerPC ELF एप्लिकेशन बाइनरी इंटरफ़ेस सप्लीमेंट संस्करण 1.9 (2004)
- रिस्क-वी:
- RISC-V ELF विशिष्टता
- स्पार्क:
- एस/390:
- zSeries/lzsabi0_s390.html S/390 32bit ELF ABI अनुपूरक
- जेड सीरीज:
- सिम्बियन OS 9:
लिनक्स मानक आधार (एलएसबी) आर्किटेक्चर के लिए उपरोक्त विनिर्देशों में से कुछ को पूरक करता है जिसमें यह निर्दिष्ट है।[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[update], FatELF को मेनलाइन Linux कर्नेल में एकीकृत नहीं किया गया है।[29][30][31]
यह भी देखें
- आवेदन बाइनरी इंटरफ़ेस
- निष्पादन योग्य फ़ाइल स्वरूपों की तुलना
- बौना आदमी – डिबगिंग डेटा के लिए एक प्रारूप
- इंटेल बाइनरी संगतता मानक
- पोर्टेबल निष्पादन योग्य – विंडोज द्वारा उपयोग किया जाने वाला प्रारूप
- vDSO – वर्चुअल डीएसओ
- स्थिति-स्वतंत्र कोड
संदर्भ
- ↑ 1.0 1.1 Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification Version 1.2 (May 1995)
- ↑ Tool Interface Standard (TIS) Portable Formats Specification Version 1.1 (October 1993)
- ↑ System V Application Binary Interface Edition 4.1 (1997-03-18)
- ↑ "Available lexers — Pygments". pygments.org.
- ↑ "ELF Header". Sco.com. July 2000. Retrieved 2014-02-07.
- ↑ "LXR linux/include/linux/elf.h". linux.no. Retrieved 27 April 2015.
- ↑ "glibc 2.12 announce".
- ↑ "sourceware.org Git - glibc.git/blob - libc-abis".
- ↑ "sourceware.org Git - glibc.git/blob - sysdeps/gnu/ldsodefs.h".
- ↑ "Program Header". Sco.com. July 2000. Retrieved 2017-04-05.
- ↑ "elfutil". sourceware.org. Retrieved 30 April 2017.
- ↑ "Binary Formats".
- ↑ "MinixReleases – Minix Wiki". Wiki.minix3.org. Archived from the original on 2013-03-30. Retrieved 2014-01-19.
- ↑ "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) - ↑ "GCCSDK – RISC OS". Riscos.info. 2012-04-22. Retrieved 2014-01-19.
- ↑ "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
- ↑ Foley, Mary Jo. "Under the hood of Microsoft's Windows Subsystem for Linux | ZDNet". ZDNet. Retrieved 2016-08-19.
- ↑ PlayStation Portable use encrypted & relocated ELF : PSP
- ↑ Symbian OS executable file format
- ↑
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).
- ↑ "Chapter 4: Object Files", System V Application Binary Interface, 2009-10-26, e_machine
- ↑ "LSB Referenced Specifications". linuxfoundation.org. Retrieved 27 April 2015.
- ↑ "Executable and Linking Format (ELF)". linuxfoundation.org. Retrieved 27 April 2015.
- ↑ "परिचय". linuxfoundation.org. Retrieved 27 April 2015.
- ↑ Leibovitch, Evan (1997-12-23). "86Open Frequently-Asked Questions". Archived from the original on 2007-03-11. Retrieved 2007-06-06.
- ↑ Record, Ronald (1998-05-21). "Bulletin on status of 86open at SCO". Archived from the original on 2008-12-08. Retrieved 2008-05-06.
- ↑ Leibovitch, Evan (1999-07-25). "The86open Project – Final Update". Archived from the original on 2007-02-27. Retrieved 2007-05-06.
- ↑ Gordon, Ryan. "fatelf-specification v1". icculus.org. Retrieved 2010-07-25.
- ↑ Gordon, Ryan. "FatELF: Turns out I liked the uncertainty better". icculus.org. Retrieved 2010-07-13.
- ↑ Holwerda, Thom (2009-11-03). "Ryan Gordon Halts FatELF Project". osnews.com. Retrieved 2010-07-05.
- ↑ Brockmeier, Joe (June 23, 2010). "SELF: Anatomy of an (alleged) failure". Linux Weekly News. Retrieved 2011-02-06.
अग्रिम पठन
- Levine, John R. (2000) [October 1999]. Linkers and Loaders. The Morgan Kaufmann Series in Software Engineering and Programming (1 ed.). San Francisco, USA: Morgan Kaufmann. ISBN 1-55860-496-0. OCLC 42413382. Archived from the original on 2012-12-05. Retrieved 2020-01-12. Code: [1][2] Errata: [3]
- Drepper, Ulrich (2006-08-20). "How To Write Shared Libraries" (PDF). 4.0. Retrieved 2007-06-20.
{{cite journal}}
: Cite journal requires|journal=
(help) - An unsung hero: The hardworking ELF by Peter Seebach, December 20, 2005, archived from the original on February 24, 2007
- LibElf and GElf - A Library to Manipulate ELf Files at the Wayback Machine (archived February 25, 2004)
- The ELF Object File Format: Introduction, The ELF Object File Format by Dissection by Eric Youngdale (1995-05-01)
- A Whirlwind Tutorial on Creating Really Teensy ELF Executables for Linux by Brian Raiter
- ELF relocation into non-relocatable objects by Julien Vanegue (2003-08-13)
- Embedded ELF debugging without ptrace by the ELFsh team (2005-08-01)
- Study of ELF loading and relocs by Pat Beirne (1999-08-03)
बाहरी संबंध
- FreeBSD Handbook: Binary formats (archived version)
- FreeBSD elf(5) manual page
- NetBSD ELF FAQ
- Linux elf(5) manual page
- Oracle Solaris Linker and Libraries Guide
- The ERESI project : reverse engineering on ELF-based operating systems Archived 2021-03-14 at the Wayback Machine
- Linux Today article on 86open July 26, 1999
- Announcement of 86open on Debian Announce mailing list October 10, 1997, Bruce Perens
- Declaration of Ulrich Drepper (PDF) in The SCO Group vs IBM, September 19, 2006
- 86open and ELF discussion Archived 2019-02-01 at the Wayback Machine on Groklaw, August 13, 2006
- CS1 maint: archived copy as title
- Templates that generate short descriptions
- Articles containing potentially dated statements from 2021
- Collapse templates
- Navigational boxes
- Navigational boxes without horizontal lists
- Sidebars with styles needing conversion
- Templates generating microformats
- Templates that are not mobile friendly
- Wikipedia metatemplates
- निष्पादन योग्य फ़ाइल स्वरूप
- Machine Translated Page
- Created On 17/02/2023