2011-09-26 3 views
55

मुझे लिनक्स बॉक्स में पुस्तकालयों को स्थापित करने के लिए एक जगह चाहिए जहां मेरे पास कोई सु एक्सेस नहीं है। मैं ~/स्थानीय [/ bin,/lib,/include] का उपयोग कर रहा हूं, लेकिन मुझे नहीं पता कि मैं पुस्तकालयों को देखने के लिए ./configure कैसे कह सकता हूं (विशेष रूप से, मैं emacs संकलित करने की कोशिश कर रहा हूं, जिसके लिए libgif की आवश्यकता है , जो मेरे distro में नहीं आता है)।चक्र को कॉन्फ़िगर/बनाने के लिए शामिल और lib पथ कैसे जोड़ें?

मैं .bashrc को

export PATH=$PATH:~/local/bin 
export LD_LIBRARY_PATH=~/local/lib 
export C_INCLUDE_PATH=~/local/include 
export CPLUS_INCLUDE_PATH=~/local/include 

जोड़ने की कोशिश की, लेकिन यह काम करने के लिए प्रतीत नहीं होता।

$ LDFLAGS="-L/home/me/local/lib" CFLAGS="-I/home/me/local/include" make 

आपको लगता है कि एक gazillion बार, अपने .bashrc (या अपने खोल समकक्ष) में इन निर्यात करने के लिए नहीं करना चाहते हैं:

+2

ध्यान दें कि पथ के लिए छोड़कर, आप अपने सिस्टम को डिफ़ॉल्ट रूप से ओवरराइट करते हैं। यदि आप 'निर्यात C_INCLUDE_PATH = ~/local/include: $ C_INCLUDE_PATH' जैसे कुछ करते हैं, तो आपका कंपाइलर पहले ~ '/ local/include' में और $ C_INCLUDE_PATH में खोज करेगा, अगर उसे पहली निर्देशिका में शामिल नहीं किया गया है । –

उत्तर

73

आप एक config.site फ़ाइल चाहते हैं। प्रयास करें:

 
$ mkdir -p ~/local/share 
$ cat <<EOF> ~/local/share/config.site 
CPPFLAGS=-I$HOME/local/include 
LDFLAGS=-L$HOME/local/lib 
... 
EOF 

जब भी आप एक autoconf आह्वान उत्पन्न उपसर्ग = $ घर/स्थानीय, config.site पढ़ा जाएगा और सभी कार्य आप के लिए किया जाएगा के साथ स्क्रिप्ट कॉन्फ़िगर। सीपीपीएफएलजीएस और एलडीएफएलजीएस आपको बस चाहिए, लेकिन आप किसी अन्य वांछित असाइनमेंट भी कर सकते हैं (इसलिए ... उपरोक्त नमूने में)। ध्यान दें कि- I झंडे सीपीपीएफएलजीएस में हैं और सीएफएलजीएस में नहीं हैं, क्योंकि- मैं प्री-प्रोसेसर के लिए है और संकलक नहीं।

+0

विलियम; एक धन्यवाद, जो साझा मेजबान पर निर्माण के लिए सीपीपीएफएलजीएस के बारे में सलाह पर बैंग था। आपके नोट की वजह से आज असफल ./configure के साथ बहुत थकाऊ बचाया गया। –

25

सेट LDFLAGS और CFLAGS आप कर चलते हैं तो। इसके अलावा LD_LIBRARY_PATH सेट शामिल करने के लिए/घर/मुझे/स्थानीय/lib:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/me/local/lib 
+0

जब मैं ldFLAGS और CFLAGS को .bashrc ./configure में कॉन्फ़िगर करने में विफल रहता हूं: त्रुटि: सी कंपाइलर निष्पादन योग्य नहीं बना सकता ... – Lacrymology

+0

वे शायद कॉन्फ़िगरेशन टेस्ट कोड कंपाइलर पैरामीटर को ओवरराइड कर रहे हैं। बस एनवी prefetching बनाने का उपयोग करें। यह भी प्रयास करें और देखें कि कॉन्फ़िगरेशन में पहले से ही libgif को ओवरराइड करने का विकल्प नहीं है या नहीं।यदि autotools स्क्रिप्ट ठीक तरह से बनाई गई हैं तो यह आपको उस पथ को spec करने के लिए बाध्य करेगी जहां libgif स्थापित है (उदा। डिफ़ॉल्ट लाइब्रेरी स्थान ओवरराइड करें)। वह क्लीनर समाधान होगा। – long404

+0

एक ही अंतर .. tneme @ ws16lab07: ~/Descargas/emacs-23.3 $ LDFLAGS = "- एल/होम/टीएनएमई/स्थानीय/lib" CFLAGS = "- l/home/tneme/local/include" ./configure - -prefix = "/ home/tneme/local" बिल्डिंग सिस्टम प्रकार की जांच ... i686-pc-linux-gnu होस्ट सिस्टम प्रकार की जांच ... i686-pc-linux-gnu gcc की जांच ... gcc यह जांचना कि सी संकलक काम करता है ... नहीं कॉन्फ़िगर करें: त्रुटि: '/home/tneme/Descargas/emacs-23.3 'में: कॉन्फ़िगर करें: त्रुटि: सी कंपाइलर निष्पादन योग्य नहीं बना सकता अधिक जानकारी के लिए' config.log 'देखें टी – Lacrymology

8

इसमें सही होने में कुछ समय लगा। एआरएम लक्ष्य के लिए उबंटू में क्रॉस-संकलन करते समय मुझे यह समस्या थी। मैं के साथ इसे हल:

PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib ./autogen.sh --build=`config.guess` --host=armv5tejl-unknown-linux-gnueabihf 

सूचना CFLAGS autogen.sh/configure साथ नहीं किया जाता है, यह मेरे त्रुटि दे दी है का उपयोग करते हुए: "कॉन्फ़िगर: त्रुटि: सी संकलक निष्पादनयोग्य नहीं बना सकते।" निर्माण वातावरण में मैं एक autogen.sh स्क्रिप्ट का उपयोग कर रहा था, अगर आपके पास ऊपर दिए गए आदेश में ./configure के साथ autogen.sh स्क्रिप्ट विकल्प नहीं है ./autogen.sh। मैं --host पैरामीटर प्राप्त करने के लिए लक्ष्य प्रणाली पर config.guess भाग गया।

PATH=$PATH:/ccpath/bin CC=ccname-gcc AR=ccname-ar LD=ccname-ld CPPFLAGS="-nostdinc -I/ccrootfs/usr/include ..." LDFLAGS=-L/ccrootfs/usr/lib CFLAGS="-march=... -mcpu=... etc." make 

CFLAGS मैं उपयोग करने के लिए चुना है इस प्रकार थे: "मार्च = ARMv5TE -fno-वृक्ष की vectorize -mthumb-Interwork -mcpu = arm926ej

सफलतापूर्वक autogen.sh/configure चलाने के बाद, साथ संकलन -s "। इसमें शामिल सभी निर्देशिकाओं को सही तरीके से स्थापित करने में कुछ समय लगेगा: आप शायद कुछ को अपने क्रॉस-कंपाइलर को इंगित करना चाहते हैं और कुछ आपकी रूट फ़ाइल सिस्टम को इंगित करने में शामिल हैं, और कुछ विवाद होने की संभावना है।

मुझे यकीन है कि यह सही जवाब नहीं है। और मैं अभी भी मेकफ़ाइल में/और नहीं/ccrootfs को इंगित करने वाली निर्देशिकाओं को शामिल कर रहा हूं। यह जानना अच्छा लगेगा कि इसे कैसे ठीक किया जाए। उम्मीद है कि यह किसी की मदद करता है।

संबंधित मुद्दे