मैं g ++ में पुस्तकालयों के लिए एक पथ कैसे शामिल करूं?


96

मैं अपने मेकफाइल में अतिरिक्त पुस्तकालयों के लिए पथ को शामिल करने की कोशिश कर रहा हूं, लेकिन मैं यह पता नहीं लगा सकता कि उस पथ का उपयोग करने के लिए संकलक कैसे प्राप्त करें। अभी तक मेरे पास:

g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test

और मैं पथ को शामिल करना चाहता हूं

/data[...]/lib

क्योंकि test.cpp में उस लाइब्रेरी की फाइलें शामिल हैं। इसके अलावा, मैं एक linux मशीन पर हूँ।

EDIT: लाइब्रेरी का रास्ता नहीं। बस उन फ़ाइलों को शामिल किया गया है जो शामिल हैं। मेरी गलती।


जवाबों:


168

(बाइनरी) पुस्तकालयों की खोज के लिए एक निर्देशिका निर्दिष्ट करने के लिए, आप बस उपयोग करते हैं -L:

-L/data[...]/lib

वास्तविक पुस्तकालय नाम निर्दिष्ट करने के लिए, आप उपयोग करते हैं -l:

-lfoo  # (links libfoo.a or libfoo.so)

के लिए खोज करने के लिए एक निर्देशिका निर्दिष्ट करने के लिए शामिल हैं (! पुस्तकालयों से अलग) फ़ाइलें आप का उपयोग -I:

-I/data[...]/lib

इसलिए मुझे लगता है कि आप जो चाहते हैं वह कुछ ऐसा है

g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test

4
मूल रूप से कहीं इसकी आवश्यकता से पहले; -Iसीपीपी फ़ाइल नाम से पहले आना चाहिए, उदाहरण के लिए।
अर्नेस्ट फ्रीडमैन-हिल

1
क्या संकलक को बाहर निकालना संभव है, जैसे लाइब्रेरी को सिस्टम वेरिएबल में जोड़ना?
फ्रेड

5
@Fred, हाँ, जी ++ पर्यावरण चर का एक पूरा गुच्छा समझता है जिसका उपयोग पथ, पुस्तकालय पथ, आदि को नियंत्रित करने के लिए किया जा सकता है
अर्नेस्ट फ्रीडमैन-हिल

1
क्या अंतर है -L और -I (कैपिटल i, लोअर L नहीं)?
Youda008

1
@ Youda008 कैपिटल ell: पुस्तकालयों के लिए खोज पथ। कैपिटल आई: फाइलों को शामिल करने के लिए खोज पथ। छोटा ell: लिंक करने के लिए लाइब्रेरी का नाम।
अर्नेस्ट फ्रेडमैन-हिल

1

अपने MakeFile या CMakeLists.txt में आप नीचे दिए अनुसार CMAKE_CXX_FLAGS सेट कर सकते हैं:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.