मुझे कैसे पता चलेगा कि मेरे आवेदन के लिंक लिबक के किस संस्करण में हैं?


14

जब जी ++ का उपयोग करते हुए एक एप्लिकेशन का निर्माण करते हैं, तो मैं स्पष्ट रूप से उसी तरह से लिंक करने के लिए एक पुस्तकालय के रूप में लिबास लाइब्रेरी पास नहीं कर रहा हूं जैसे आप अन्य लाइब्रेरी के लिए करेंगे (जैसे -lpthreadकि उदाहरण के लिए गुजरना )। मुझे पता है कि libc का नाम तो है, libc.so.6लेकिन मुझे पता है कि यह वास्तव में एक पुस्तकालय नहीं है, लेकिन libc के दूसरे संस्करण (जैसे libc-2.15.so) के लिए एक सूचक की तरह कुछ है । मेरा सवाल यह है कि अगर मेरे कंप्यूटर पर कई तरह के परिवाद थे, तो मैं यह कैसे बता सकता हूं कि कौन सा वास्तव में किसके माध्यम से जुड़ा हुआ है libc.so.6

जवाबों:


16

lddअपनी पसंद का उपकरण होना चाहिए। इससे आपको साझा लाइब्रेरी वास्तव में जुड़ी हुई मिलती है।

confus@confusion:~/misc/test$ ldd -r -v testendian
    linux-vdso.so.1 =>  (0x00007fffbcfff000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a5a4c5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1a5a8a5000)

    Version information:
    ./testendian:
        libc.so.6 (GLIBC_2.2.5) => /lib/x86_64-linux-gnu/libc.so.6
    /lib/x86_64-linux-gnu/libc.so.6:
        ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
        ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

परिवाद के मामले में आप बस .soफ़ाइल चला सकते हैं और इसे लाइब्रेरी संस्करण बताया जाएगा।

confus@confusion:~/misc/test$ /lib/x86_64-linux-gnu/libc.so.6 
GNU C Library (Ubuntu EGLIBC 2.15-0ubuntu10) stable release version 2.15, by Roland McGrath et al.

मैं ldd के बारे में जानता था, नहीं जानता था कि आप सिर्फ एक पुस्तकालय चला सकते हैं - धन्यवाद। दुर्भाग्य से पुस्तकालय चलाने से मेरा उत्पादन संस्करण नहीं दिखाता है ...
गणितज्ञ

उपेक्षा कि मैं एक मूर्ख था - उत्तर के लिए धन्यवाद!
गणितज्ञ

1
जवाब के लिए धन्यवाद। क्या आप कुछ जानकारी प्रदान कर सकते हैं कि ldd आउटपुट मुझे क्या बताता है? क्या इसका मतलब है कि testendianGLIBC_2.3 या GLIBC_2.2.5 की आवश्यकता है?
बोनान्ज़ा

मुझे पूरा यकीन है, इसका मतलब है कि कार्यक्रम को GLIBC 2.2.5 की जरूरत है और लाइब्रेरी लोडर ld-linux-x86-64 GLIBC_2.3 के साथ बनाया गया था। तो एक तरह से दोनों। लेकिन नमक के एक दाने के साथ ले लो, क्योंकि मुझे एक संदर्भ नहीं मिला।
कॉन-एफ-

गतिशील निष्पादन योग्य के लिए बढ़िया काम करता है, लेकिन स्थैतिक लोगों के लिए इतना नहीं! : (मैं क्या मैं एक जीसीसी चेतावनी के becauses रूप से लिंक हो रहा हूँ परीक्षण की आवश्यकता warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking)
jpaugh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.