./Configure कमांड में लाइब्रेरी का रास्ता कैसे जोड़ें?


51

मैं ./configureएक लाइब्रेरी से लिंक करना चाहूंगा और कुछ में फाइलें शामिल हैं। मेरी लाइब्रेरी संग्रहीत है /home/foo/sw/lib/और मेरी फ़ाइलें अंदर संग्रहीत हैं /home/foo/sw/include

./configure --help निम्नलिखित को बाहर फेंकता है:

कुछ प्रभावशाली पर्यावरण चर:

  CC           C compiler command
  CFLAGS       C compiler flags
  LDFLAGS      linker flags, e.g. -L<lib dir> if you have libraries in a 
               nonstandard directory <lib dir>
  LIBS         libraries to pass to the linker, e.g. -l<library>
  CPPFLAGS     (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if 
               you have headers in a nonstandard directory <include dir>
  CPP          C preprocessor

मैंने विभिन्न संयोजनों की कोशिश की है:

./configure --prefix=/home/foo/sw -I</home/foo/sw/include> -L</home/foo/sw/lib/>
./configure --prefix=/home/foo/sw -I=/home/foo/sw/include -L=/home/foo/sw/lib/
./configure --prefix=/home/foo/sw -I/home/foo/sw/include -L/home/foo/sw/lib/
etc..

लेकिन मुझे सिंटैक्स सही नहीं लगता। अगर कोई भी मेरी मदद कर सकता है, तो उसे बहुत सराहना मिलेगी। धन्यवाद!

जवाबों:


58

आप का अर्थ छूट गया

कुछ प्रभावशाली पर्यावरण चर :

तो आप उन्हें एक पर्यावरण चर के रूप में सेट करते हैं; config फाइल और पर्यावरण की जाँच करके LDFLAGS और CPPFLAGS को निर्धारित करता है। आप उन्हें इस तरह सेट कर सकते हैं ...

export CPPFLAGS='-I/home/foo/sw/include/'
export LDFLAGS='-L/home/foo/sw/lib/'
./configure

या एक-लाइनर के रूप में:

env CPPFLAGS='-I/home/foo/sw/include/' LDFLAGS='-L/home/foo/sw/lib/' ./configure

कृपया ध्यान दें कि यह संभव है कि आप उपनिर्देशिका का उपयोग नहीं कर सकते /home/foo/sw/lib/

fe अपनी लाइब्रेरी डालने में /home/foo/sw/lib/bar/आपको lib not foundत्रुटि दिखा सकता है ।

हालाँकि आप कई प्रविष्टियों का उपयोग कर सकते हैं:

LDFLAGS="-L/home/foo/sw/lib/ -L/home/foo/bar/lib/"


4
शायद CPPFLAGS = '- I / home / foo / sw / में शामिल हैं: $ CPPFLAGS' बस अगर कुछ बाहर है;)
Braiam

1
हाय, रिनविंड। मैं LDFLAGS=-Lऔर के बीच के अंतर को लेकर उलझन में हूं LIBS=-l। मदद के अनुसार, वे एक ही चीज लगते हैं। क्या कोई अंतर है?
user15964

@ user15964 -Lपुस्तकालयों की खोज के लिए एक निर्देशिका को संदर्भित करता है, जबकि -lलिंकर को एक विशिष्ट पुस्तकालय के खिलाफ लिंक करने के लिए सूचित करता है (यह खोजने के लिए कि यह -Lडिफ़ॉल्ट सेट के साथ-साथ आपूर्ति की गई निर्देशिकाओं को खोज लेगा ।
sherrellbc

क्यों एक के /बाद एक है, LDFLAGSलेकिन नहीं है CPPFLAGS? क्या वह टाइपो है, या यह महत्वपूर्ण है?
vy32

नहीं, दोनों काम और नहीं। अंत में / यह दर्शाता है कि यह एक निर्देशिका है, लेकिन इसकी आवश्यकता भी नहीं है।
रिनविंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.