CFLAGS और LDFLAGS को "कॉन्फ़िगर" करने के लिए सही सिंटैक्स क्या है?


40

मैं OpenVD 5.5 पर ओपन वीपीएन को स्थापित करना चाहता हूं।

यहाँ दिए गए निर्देशों के अनुसार , मुझे lzo और स्थापित करना है

जोड़ें CFLAGS = "- I / usr / स्थानीय /" LDFLAGS = "- L / usr / स्थानीय / लिबास" निर्देश "कॉन्फ़िगर" करने के लिए, क्योंकि gcc उन्हें अन्यथा नहीं मिलेगा।

मैंने OpenBSD पर उपरोक्त कार्य करने के तरीके के बारे में विस्तार से जाना है लेकिन कोई नहीं है।

मेरी यही योजना है:

  1. स्रोत टारबॉल को हौसले से बनाई गई डायरेक्टरी में अनटार करें
  2. आदेश जारी करें। / कॉन्फ़िगर CFLAGS = "- I / usr / स्थानीय /" LDFLAGS = "- L / usr / स्थानीय / lib शामिल करें"
  3. आदेश जारी करें
  4. आदेश जारी करें स्थापित करें

निम्नलिखित में से कौन सा वाक्यविन्यास सही है?

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

या

./configure --CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

या

./configure --CFLAGS="-I/usr/local/include" --LDFLAGS="-L/usr/local/lib"

जवाबों:


41

सही तरीका है:

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

लेकिन यह सभी configureलिपियों के साथ काम नहीं कर सकता है । शायद पर्यावरण चर जैसे कि CPATHऔर LIBRARY_PATH( gccमैन पेज देखें ) सेट करना बेहतर है ।

एक उदाहरण:

export CPATH=/usr/local/include
export LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH=/usr/local/lib

आपके .profileउदाहरण के लिए। LD_LIBRARY_PATHसाझा पुस्तकालयों के मामले में आवश्यक हो सकता है अगर एक रन पथ नहीं किया जाता है (इस ओएस पर निर्भर करता है, निर्माण उपकरणों और विकल्पों कि उपयोग किया जाता है, लेकिन यह चोट नहीं होना चाहिए)।


आपके उत्तर के लिए धन्यवाद। OpenBSD 5.5 की आधार प्रणाली में डिफ़ॉल्ट रूप से gcc स्थापित है? यदि ऐसा नहीं है तो मैं तृतीय-पक्ष पैकेज स्थापित करने वाला नहीं हूं क्योंकि इसमें बग या सुरक्षा कमजोरियां हो सकती हैं।
user66229

1
@ user66229 यदि आपने एक डिफ़ॉल्ट इंस्टॉल किया है, तो हाँ, gcc-4.2.1(जब तक कि आप वैक्सन जैसी पुरानी मशीनों पर नहीं हैं) अंदर है comp55.tgz। वहाँ के लिए संकुल हैं gcc-4.8और 4.9, और भी llvm/clang 3.0। पूर्व को मुख्य रूप से लाइसेंसिंग कारणों (GPLv2 बनाम GPLv3) के लिए शामिल नहीं किया गया है, बाद का उपयोग नहीं किया जाता है क्योंकि यह उन सभी प्लेटफार्मों का समर्थन नहीं करता है जो वर्तमान में OpenBSD का समर्थन करता है।
डैमियन

1
@ user66229 मैंने अपना उत्तर संपादित कर लिया है। यह केवल एक उदाहरण है, इसे करने के अन्य तरीके हो सकते हैं, और आपके पास पहले से ही कुछ सेटिंग्स हो सकती हैं। पहले वगैरह चेक echo $CPATHकर लें।
vinc17

1
धन्यवाद "लेकिन यह सभी कॉन्फ़िगर स्क्रिप्ट के साथ काम नहीं कर सकता है" टिप्पणी - मैं सिर्फ एक मामले में भाग गया, जहां सीएफएलएजीएस के साथ संकलित कई निर्भरता के बाद, सीएफएलएजीएस निर्दिष्ट होने पर आखिरी निर्भरता क्रैश हो जाती है (और वास्तव में, " grep CFLAGS configureकॉन्फ़िगर स्क्रिप्ट से खाली लौटता है)" ।
sdaau

1
मैं के साथ बहुत सावधान रहना होगा LD_LIBRARY_PATH: xahlee.info/UnixResource_dir/_/ldpath.html
स्केले

8

पहला सिंटेक्स सही है।

./configure CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"

हालांकि, बाइनरी का उपयोग करने की दृढ़ता से अनुशंसा की जाती है packages(7)या, यदि किसी भी कारण से आपको स्रोत से निर्माण करने की आवश्यकता है, तो ports(7)बुनियादी ढांचे का उपयोग करें , जैसा कि एफएक्यू अनुभाग 15 द्वारा समझाया गया है

FAQ में विस्तृत रूप में पोर्ट्स ट्री सेट करें। फिर एक openvpnबंदरगाह की तलाश करें:

cd /usr/ports
make search key=openvpn

यह शब्द में कई पोर्ट को आउटपुट देगा openvpn। उनमें से एक openvpn-2.3.2पथ के साथ है net/openvpn

cd net/openvpn
sudo make install clean

इससे यह लाभ होगा कि lzo2आपके सिस्टम को क्लोब किए बिना निर्भरताएं (केवल यहां ) ठीक से स्थापित हो जाएंगी और आपको openvpnओपनबीएसडी पर उपयोग करने के तरीके के बारे में अतिरिक्त निर्देश मिलेंगे ।


आपके उत्तर के लिए धन्यवाद। OpenBSD 5.5 में पहले से एक OpenVPN (बाइनरी) पैकेज है, लेकिन यह 2.3.2 संस्करण में पुराना है। मैं नवीनतम संस्करण 2.3.4 को संकलित और स्थापित करना चाहता हूं जो केवल OpenVPN के GitHub से उपलब्ध है।
user66229

जैसा कि आपने lzo का उल्लेख किया है, मैंने देखा कि तीन बाइनरी पैकेज उपलब्ध हैं: lzo-1.08p3.tgz, lzo2-2.06p0.tgz और lzop-1.03.tgz। इन 3 में से कौन सा OpenVPN के लिए निर्भरता है?
user66229

1
@ user66229: यही होगा lzo2-2.06p0.tgz। यहाँ एक पैच कि के बंदरगाह को अपग्रेड किए जाने openvpnसे 2.3.2करने के लिए 2.3.4है, लेकिन शायद ही के बीच एक परिवर्तन OpenBSD के लिए प्रासंगिक नहीं है दो संस्करणों (संपूर्ण थ्रेड पढ़ें)। मैं वास्तव में, वास्तव में अनुशंसा करता हूं कि आप सिर्फ बाइनरी पैकेज के साथ जाएं।
डेमियन

@ अपने उत्तर के लिए धन्यवाद और पैच का लिंक। मैंने पैच की सामग्री को पढ़ा और मुझे जो चिंता हुई वह यह है कि ओपनवीपीएन के लिए ओपनबीएसडी में कोई अनुचर नहीं है । कृपया मुझे इस उत्तर का अनुमान लगाने में मदद करें कि बाइनरी पैकेज openvpn-2.3.2.tgzओपनबीएसडी के आधिकारिक डाउनलोड दर्पण पर कैसे मिला?
user66229

1
@ user66229 यहां आप पोर्ट के मेकफिल के लिए संपूर्ण संशोधन सूची देख सकते हैं। जैसा कि स्टुअर्ट हेंडरसन (मुख्य पैकेज अनुरक्षकों में से एक) ने उस धागे में कहा था, उन परिवर्तनों में से कई वास्तव में OpenDD के लिए प्रासंगिक नहीं हैं।
डेमियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.