फ़ाइल कमांड यह क्यों कहता है कि ELF बायनेरिज़ लिनक्स 2.6.9 के लिए हैं?


18

जब भी मैं एक ईएलएफ बाइनरी पर फ़ाइल चलाता हूं तो मुझे यह आउटपुट मिलता है:

[jonescb@localhost ~]$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for
GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, 
not stripped

मैं बस सोच रहा हूँ कि लिनक्स 2.6.9 में क्या बदला है कि यह बाइनरी 2.6.8 पर नहीं चल सकता है? क्या Linux 2.0 में ELF समर्थन नहीं जोड़ा गया?

जवाबों:


23

glibcएक कॉन्फ़िगर विकल्प --enable-kernelहै, जो आपको न्यूनतम समर्थित कर्नेल संस्करण निर्दिष्ट करने देता है। जब ऑब्जेक्ट फ़ाइलें उस glibc बिल्ड के साथ लिंक की जाती हैं, तो लिंकर एक SHT_NOTE सेक्शन को परिणामी निष्पादन योग्य नाम से जोड़ता .note.ABI-tagहै जिसमें वह न्यूनतम कर्नेल संस्करण शामिल होता है। एलएसबी में सटीक प्रारूप को परिभाषित किया गया है , और fileउस अनुभाग को देखने और इसकी व्याख्या करने का तरीका जानता है।

2.6.9 की आवश्यकता के लिए आपके विशेष ग्लिबक को बनाया गया था, यह इस बात पर निर्भर करता है कि इसे किसने बनाया था। यह मेरे सिस्टम (Gentoo) पर समान है; glibc के पुनर्निर्माण में एक टिप्पणी कहती है कि यह 2.6.9 को निर्दिष्ट करता है क्योंकि यह NPTL के लिए न्यूनतम आवश्यक है , इसलिए यह एक आम विकल्प है। एक और ऐसा प्रतीत होता है जो 2.4.1 पर आता है, क्योंकि यह LinuxThreads के लिए न्यूनतम आवश्यक था , एनपीटीएल से पहले इस्तेमाल किया जाने वाला पैकेज


क्या आप न्यूनतम आवश्यक कर्नेल संस्करण को बढ़ाते समय प्रदर्शन सुधार प्राप्त करते हैं? ऐसा करने के क्या लाभ हैं?
आरोन फ्रेंके

यहाँ (फेडोरा 31, x86_64) /lib/libc-2.30.so के लिए कर्नेल 3.20 की आवश्यकता है (वर्तमान कर्नेल संस्करण 5.3.12-300 है)
वॉनब्रांड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.