./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.