से जुड़ा हुआ था, मैं अपने प्रोग्राम को ग्लिबैक के साथ स्थिर रूप से लिंक करने का प्रयास कर रहा हूं, क्योंकि लक्ष्य मशीन पर ग्लिब का संस्करण काफी अप्रत्याशित है। मैंने लिंकर झंडे -स्टैटिक-libgcc और -static-libstdC++ का उपयोग किया और यह ठीक काम किया। निष्पादन योग्य बड़ा है, लेकिन मैं इसके साथ रह सकता हूं। दुर्भाग्य से, जब मैं लक्षित मशीन पर मेरी निष्पादन योग्य चलाने (यह नाम दिया गया है 'mytest' नीचे दिए गए उदाहरण में) मैं निम्नलिखित त्रुटि मिलती है:प्रोग्राम glibc/libstdC++ का सही संस्करण नहीं ढूंढ सकता है, हालांकि यह स्थिर रूप से
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by libboost_log.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by libboost_log.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by libboost_log.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by libboost_date_time.so.1.53.0)
./mytest: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by libboost_thread.so.1.53.0)
अगर मैं 'तार' कर mytest पर, यह मेरे
देता है$ strings mytest | grep GLIBC
GLIBC_2.9
GLIBC_2.7
GLIBC_2.8
GLIBC_2.3.2
GLIBC_2.2.5
GLIBCXX_3.4.15
GLIBCXX_3.4.11
GLIBCXX_3.4.14
GLIBCXX_3.4.9
GLIBCXX_3.4
मेरा मतलब है कि स्थिर लिंकिंग ठीक काम कर रही थी। लोडर अभी भी साझा ग्लिब और libstdC++ में मेरे कार्यों को देखने का प्रयास क्यों करता है? मैं क्या गलत कर रहा हूं?
धन्यवाद!
बहुत धन्यवाद। दुर्भाग्य से, मैं सबकुछ स्थिर रूप से लिंक नहीं कर सकता, क्योंकि तब मेरी पाथ्रेड लाइब्रेरी काम नहीं कर रही है। किसी भी कारण से, यह ठीक काम करता है अगर यह गतिशील रूप से जुड़ा हुआ है। – svetlana
@ स्वेतलाना 'libpthread' glibc का हिस्सा है।यदि आप इसे स्थिर रूप से लिंक नहीं कर सकते हैं, तो आपके पास पूरी तरह से स्थिर निष्पादन योग्य नहीं हो सकता है, और इसका तात्पर्य है कि आपका निष्पादन योग्य * पुराने सिस्टम पर कभी काम नहीं करेगा (जो अभी समर्थित नहीं है)। स्टेटिक लिंकिंग * सामान्य रूप से बहुप्रचारित कार्यक्रमों के लिए काम करता है, इसलिए आपको यह पता लगाना होगा कि यह आपके विशेष मामले के लिए क्यों काम नहीं कर रहा है, या पूरे विचार को छोड़ देता है। –
@ स्वेतलाना उत्तर अपडेट किया गया। –