-Rpath और -L के बीच अंतर क्या है?


89

gccऔर ldपुस्तकालयों के लिए एक खोज पथ निर्दिष्ट करने के कई तरीके प्रदान करते हैं - उनमें -rpathऔर -Lझंडे। मैनपाट इन दो झंडों के बीच कोई अंतर नहीं बताता है, प्रभावी रूप से कहता है कि प्रत्येक ध्वज पुस्तकालय खोज पथ में एक पुस्तकालय जोड़ता है। अभी तक यह अजीब लगता है कि दोनों झंडे करना वास्तव में एक ही बात। इन दो विकल्पों के बीच, यदि कोई हो, तो क्या अंतर हैं?


2
शायद आप सोच रहे हैं -rpath-link?
एम्स

जवाबों:


106

आप मैनपेज़ की कुछ पुरानी प्रतियां पढ़ रहे होंगे (जोर दिया):

-rpath = dir रनटाइम लाइब्रेरी खोज पथ में
      एक निर्देशिका जोड़ें । यह       साझा वस्तुओं के साथ एक ईएलएफ निष्पादन योग्य को जोड़ने पर उपयोग किया जाता है । ऑल-आरप       तर्क वितर्क और रनटाइम लिंकर को पारित किए जाते हैं , जो रनटाइम       पर साझा किए गए ऑब्जेक्ट का पता लगाने के लिए उनका उपयोग करता है।


बनाम

-L searchdir
--library-path = searchdir
      पथ खोज की सूची में पथ खोजकर्ता जोड़ें जो ld
      संग्रह पुस्तकालयों और ld नियंत्रण स्क्रिप्ट की खोज करेगा ।

तो, -Lबताता है कि ldकहां लिंक करने के लिए पुस्तकालयों को देखना है। आप इसका उपयोग करते हैं (उदाहरण के लिए) जब आप अपने बिल्ड ट्री में पुस्तकालयों के खिलाफ निर्माण कर रहे होते हैं, जिसे सामान्य सिस्टम लाइब्रेरी पथों में रखा जाएगा make install--rpathदूसरी ओर, निष्पादन योग्य के अंदर उस पथ को संग्रहीत करता है, ताकि रनटाइम डायनेमिक लिंकर पुस्तकालयों को ढूंढ सके। आप इसका उपयोग तब करते हैं जब आपके पुस्तकालय सिस्टम लाइब्रेरी खोज पथ के बाहर होते हैं।


16
नोट: 1. अधिकांश समय जब एक की जरूरत होती है -rpath=/some/weird/path, तो किसी को -L /some/weird/pathभी जरूरत होती है। 2. gccएक की जरूरत के साथ उपयोग -Wl,-rpath=dir
एन। 'सर्वनाम' मी।

4
मुझे अभी भी समझ नहीं आया कि दोनों की आवश्यकता क्यों है। मुझे ऊपर nm जैसा ही अनुभव है। बिल्ड टाइम में लाइब्रेरी से क्या जानकारी चाहिए? संभावित एच-फाइलों के अलावा, कारण। लेकिन यह एक और बात है जो मुझे लगता है ...
फ्रेड्रिक जोहानसन

1
@FredrikJohansson यह एक नए प्रश्न के लिए एक उचित विषय होगा (यह मानते हुए कि यह पहले से ही नहीं पूछा गया है, निश्चित रूप से)। उपलब्ध प्रतीकों की आवश्यकता है, कम से कम, लेकिन संभवतः अन्य चीजें हैं।
derobert

4
फॉलोअप सवाल में कहा गया: stackoverflow.com/questions/28096133/…
फ्रेड्रिक जोहानसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.