क्योंकि पल के लिए माफी माँगता हूँ मैं पर्यावरण प्रयोग और अपने आप निम्न प्रश्नों को हल करने की जरूरत नहीं है । जबकि से जोड़ने के लिए पुस्तकालयों का उल्लेख करते समय निम्न दृष्टिकोण के बीच मतभेदों को क्या कर रहे हैं:जीसीसी लिंकर पर प्रश्न
ए) -l:libmylib_super.a
बी) -llibmylib_super
सी) -lmylib_super
डी) -lmylib_dumb
2) आदमी पृष्ठ से -static
की परिभाषा :
डायनामिक लिंकिंग का समर्थन करने वाले सिस्टम पर, यह लिंकिंग बुद्धि को रोकता है एच साझा पुस्तकालयों। अन्य सिस्टम पर, इस विकल्प का कोई प्रभाव नहीं है।
क्या इस लिंकर विकल्प के पास प्रश्न # 1 के साथ कुछ भी करना है? या ... किसी भी मौके से वे एक दूसरे के साथ हस्तक्षेप करेंगे?
धन्यवाद।
--- 2009-12-28 संपादित ---
मैं बस जाने और थोड़ा प्रयोग, DATE_TIME पुस्तकालय बूस्ट से लिंक करके मेरी वातावरण मिला है। मान लें कि मेरे पास तीन लाइब्रेरी फाइलें हैं: libboost_date_time-mt-d.a
, libboost_date_time-mt-d.so.1.41.0
, libboost_date_time-mt-d.so -> libboost_date_time-mt-d.so.1.41.0
(sym link)।
ए .1) -l:libboost_date_time-mt-d.a
==> लाइब्रेरी फ़ाइल के बिना भी ठीक है, द्विआधारी काम करता है। -static
==>जोड़ने त्रुटि/usr/bin/ld: cannot find -lm
C.1) -lboost_date_time-mt-d
==> जोड़ने ठीक है, द्विआधारी काम करता है लेकिन शेयर की गई लाइब्रेरी फ़ाइल की आवश्यकता के साथ
.2) -l:libboost_date_time-mt-d.a
।
C.2) -static
==>जोड़ने त्रुटि/usr/bin/ld: cannot find -lm
.2 और C.2 में त्रुटि के बारे में कोई विचार के साथ -lboost_date_time-mt-d
?
इसके अतिरिक्त, सी .1 में प्रोग्राम चलाते समय, यह साझा लाइब्रेरी फ़ाइल को libboost_date_time-mt-d.so.1.41.0
नाम से खोजता है लेकिन libboost_date_time-mt-d.so
नहीं है। यदि प्रोग्राम लाइब्रेरी के सटीक संस्करण के बिना सिस्टम पर चल रहा है तो यह असुविधाजनक नहीं होगा? साझा लाइब्रेरी का उपयोग करते समय संस्करण को संभालने का व्यावहारिक तरीका क्या हो सकता है?
सुधार: जब '-स्टैटिक' निर्दिष्ट किया गया है, केवल '.a' खोजा जाएगा , '.so' – iamamac
ओह हाँ नहीं! –
आप एम पा सकते हैं इस वेबसाइट पर विभिन्न विकल्पों पर अयस्क की जानकारी: http://gcc.gnu.org/onlinedocs/gcc/ –