मेकफ़ाइल में -आई और -एल फ्लैग का उपयोग क्या है?मेकफ़ाइल में -आई और -एल के बीच क्या अंतर है?
उत्तर
ये आमतौर पर लिंकर कमांड लाइन का हिस्सा होते हैं, और या तो सीधे एक लक्षित कार्रवाई में प्रदान किए जाते हैं, या आमतौर पर make
वैरिएबल को असाइन किया जाता है जिसे लिंक कमांड बनाने के लिए विस्तारित किया जाएगा। उस मामले में:
-L
पुस्तकालयों युक्त निर्देशिका के लिए पथ है। पुस्तकालयों के लिए एक खोज पथ।
-l
पुस्तकालय आप लिंक करना चाहते हैं उसका नाम है।
उदाहरण के लिए, आप जोड़ना चाहते हैं, तो आप पुस्तकालय ~/libs/libabc.a
लिंक करना चाहते हैं:
-L$(HOME)/libs -labc
जोड़ने के लिए डिफ़ॉल्ट अंतर्निहित नियम का लाभ लेने के लिए, चर LDFLAGS
करने के लिए इन झंडे जोड़ने के लिए,
LDFLAGS+=-L$(HOME)/libs -labc
यह उदाहरण
012 के लिए एक अच्छी आदतLDFLAGS
और
LIBS
अलग करने के लिए है,
# LDFLAGS contains flags passed to the compiler for use during linking
LDFLAGS = -Wl,--hash-style=both
# LIBS contains libraries to link with
LIBS = -L$(HOME)/libs -labc
program: a.o b.o c.o
$(CC) $(LDFLAGS) $^ $(LIBS) -o [email protected]
# or if you really want to call ld directly,
# $(LD) $(LDFLAGS:-Wl,%=%) $^ $(LIBS) -o [email protected]
यहां तक कि अगर यह अन्यथा काम कर सकते हैं, -l...
निर्देशों के बाद वस्तुओं है कि उन प्रतीकों का संदर्भ जाना करने वाले हैं। कुछ अनुकूलन (-Wl,--as-needed
सबसे स्पष्ट है) गलत आदेश में लिंकिंग होने पर असफल हो जाएंगे।
https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html: > एलडीएफएलजीएस कंपाइलर्स को देने के लिए अतिरिक्त झंडे जब उन्हें लिंकर, 'एलडी', जैसे कि एल। पुस्तकालयों (-lfoo) को इसके बजाय एलडीएलबीएस वैरिएबल में जोड़ा जाना चाहिए। > एलडीआईएलबीएस पुस्तकालय झंडे या कंपाइलर्स को दिए गए नाम जब उन्हें लिंकर, 'एलडी' का आह्वान करना होता है। LOADLIBES एलडीएलबीएस के लिए एक बहिष्कृत (लेकिन अभी भी समर्थित) विकल्प है। गैर पुस्तकालय लिंकर झंडे, जैसे -एल, एलडीएफएलजीएस चर में जाना चाहिए। –
ध्यान देने योग्य एक बात यह है कि ये संकलक/लिंकर को पास किए गए विकल्प हैं। तो आपको उनकी भूमिका जानने के लिए कंपाइलर मैन पेज/दस्तावेज़ीकरण को देखना चाहिए।
वास्तव में मेकफ़ाइल को ग्रोक करने के लिए, आपको अपने प्रोजेक्ट के टूलचेन के सभी घटकों के लिए कमांड लाइनों की अच्छी समझ भी होनी चाहिए। -I
और -L
जैसे विकल्प स्वयं को स्वयं नहीं समझते हैं। इसके बजाय, एक कमांड लाइन बनाने का प्रयास कर रहा है जो किसी पूर्व फ़ाइल को एक लक्ष्य फ़ाइल में बदलने के लिए एक उपकरण निष्पादित करेगा।
अक्सर, कि एक सी है या सी ++ स्रोत फ़ाइल एक वस्तु फाइल करने के लिए संकलित किया जा रहा है, और अंततः एक निष्पादन योग्य फ़ाइल प्राप्त करने के लिए जुड़े हुए हैं।
उस मामले में, आप और आपके संकलक के लिए मैनुअल को देखने के लिए की जरूरत है, विशेष रूप से आदेश पंक्ति विकल्प यह समझता है से संबंधित बिट्स।
जेनेरिक शर्तों में जो भी कहा गया है, वे विशिष्ट विकल्प कंपाइलर्स और लिंकर्स के बीच बहुत मानक हैं। -I
#include
लाइन पर नाम की गई फ़ाइल के लिए कंपाइलर द्वारा खोजी गई स्थानों की सूची में एक निर्देशिका जोड़ता है, और -L
-l
विकल्प नामक लाइब्रेरी के लिए लिंकर द्वारा खोजी गई स्थानों की सूची में निर्देशिका जोड़ता है।
लब्बोलुआब यह है, cp
कि एक makefile की 'भाषा' के रूप में बनाने के लिए (आमतौर पर /bin/sh
या कुछ इसी तरह), आम खोल आदेशों (जैसे rm
जाना जाता makefile के ही वाक्य रचना का एक संयोजन, अपने खोल है , install
, आदि), और आपके कंपाइलर और लिंकर के लिए विशिष्ट आदेश (उदा।आपके शेल प्रॉम्प्ट पर gcc -v --help
टाइपिंग आपको जीसीसी द्वारा एक शुरुआती बिंदु के रूप में समझा जाने वाले विकल्पों की लगभग पूर्ण (और अत्यंत लंबी) सूची प्रदान करेगी)।
मुझे अभी भी पता नहीं है कि मैं प्रतिनिधित्व करने का सबसे प्रभावी तरीका क्या है- मैं ध्वज? एलएलएफएलजीएस में अनुवाद किया जा सकता है। – Edmon
- 1. बैकबोन.जेएस - एल और $ एल के बीच क्या अंतर है?
- 2. आई/ओ बंदरगाहों और आई/ओ मेमोरी के बीच अंतर
- 3. एल 1 कैश और एल 2 कैश के बीच क्या अंतर है?
- 4. बैकबोनजेएस: एक दृश्य में एल: और टैगनाम के बीच क्या अंतर है:
- 5. रूबी में/\ p {अल्फा}/i और/\ p {एल}/i के बीच क्या अंतर है?
- 6. अंतर OLS और अनुसंधान के एल एम
- 7. # {} $ {} और% {} के बीच क्या अंतर है?
- 8. के बीच क्या अंतर है:। और: आर !?
- 9. [अपरिभाषित] और [,] के बीच क्या अंतर है?
- 10. $ और $$ के बीच क्या अंतर है?
- 11. भिन्नता और '-' के बीच क्या अंतर है?
- 12. "$^एन" और "$ +" के बीच क्या अंतर है?
- 13. के बीच क्या अंतर है?
- 14. MATLAB में & &&& के बीच क्या अंतर है?
- 15. अंतर और कहां के बीच क्या अंतर है?
- 16. WinAPI में हैंडल और एचएफआईएलई के बीच क्या अंतर है?
- 17. सिम्फनी में रीडायरेक्ट और आगे के बीच क्या अंतर है?
- 18. PHP में iconv() और mb_convert_encoding() के बीच क्या अंतर है?
- 19. वेरिलोग में $ स्टॉप और $ फिनिश के बीच क्या अंतर है?
- 20. ember.js में, मिश्रण और विस्तार के बीच क्या अंतर है?
- 21. पर्ल में 'eq' और '= ~' के बीच क्या अंतर है?
- 22. गेब में, प्रदर्शित और वर्तमान के बीच क्या अंतर है?
- 23. गिट में लेखक और कमिटर के बीच क्या अंतर है?
- 24. आर में, अनलिंक और file.remove के बीच क्या अंतर है?
- 25. रेगेक्स में() और [] के बीच क्या अंतर है?
- 26. लिस्प में 'और #' के बीच क्या अंतर है?
- 27. इनलाइन और # परिभाषा के बीच अभ्यास में क्या अंतर है?
- 28. .NET में KeyValuePair और हैशटेबल के बीच क्या अंतर है?
- 29. Mercurial में, 'सिर' और 'शाखा' के बीच क्या अंतर है?
- 30. आरएसपीईसी में stub_model और mock_model के बीच क्या अंतर है?
जिनक्स, क्या आप $ एलडीएफएलजीएस में विकल्पों के बारे में पूछ रहे थे या इस तरह के स्विच के रूप में थे? make -l –
@ नाथन.. पूर्व, लेकिन विकल्प पूंजी 'मैं' नहीं 'एल' है। – MainID