2012-09-04 19 views
23

मैं udev स्थापित करने का प्रयास करता हूं। और udev मुझे ./configureलिनक्स ग्लिब को pkg-config की आवश्यकता है और pkg-config को glib की आवश्यकता है?

--exists: command not found configure: error: 
pkg-config and "glib-2.0 >= 2.16" not found, please set GLIB_CFLAGS and GLIB_LIBS 
to the correct values or pass --with-internal-glib to configure 

ठीक है, pkg-config और चिकना-2.0 याद आ रही है के दौरान एक त्रुटि देता है।

पहले मैंने pkg-config स्थापित करने का प्रयास किया। मुझे यह संदेश मिला:

checking whether to list both direct and indirect dependencies... no 
checking for Win32... no 
checking if internal glib should be used... no 
checking for pkg-config... no 
./configure: line 13557: --exists: command not found 
configure: error: pkg-config and "glib-2.0 >= 2.16" not found, 
please set GLIB_CFLAGS and GLIB_LIBS to the correct values or 
pass --with-internal-glib to configure 

ठीक है, मैं समझता हूं कि ग्लिब गुम है।

ग्लिब स्थापित करने का अगला चरण।

और मैं इस संदेश मिला:

configure: error: in `/root/glib-2.33.3': 
configure: error: The pkg-config script could not be found or is too old. Make sure it 
is in your PATH or set the PKG_CONFIG environment variable to the full 
path to pkg-config. 

Alternatively, you may set the environment variables LIBFFI_CFLAGS 
and LIBFFI_LIBS to avoid the need to call pkg-config. 
See the pkg-config man page for more details. 

लेकिन अब मैं हैरान हूँ। क्या उन्हें एक-दूसरे की आवश्यकता है? मेरी गलती क्या है?

उत्तर

25

जैसा कि आपने पहले ही देखा है, वास्तव में पीकेजी-कॉन्फ़िगरेशन और ग्लिब के बीच एक परिपत्र निर्भरता है। इसे तोड़ने के लिए, pkg-config की source code में ग्लिब का एक संस्करण शामिल है, जो इसे संकलित करने के लिए पर्याप्त है। यह निर्भरता चक्र तोड़ना चाहिए।

--with-internal-glib के साथ pkg-config को कॉन्फ़िगर करने का प्रयास करें।

+0

उत्तर के लिए धन्यवाद। यह काम करता है, लेकिन ग्लिब और udev के त्रुटि संदेश अभी भी – Peter

+1

@ पीटर बने रहे हैं @ क्या आपने 'udev' को './configure --with-internal-glib' के साथ संकलित करने का प्रयास किया है? – user1202136

+0

@ पीटर बिल्कुल कोशिश करें। मैं पर्याप्त तनाव नहीं डाल सकता कि त्रुटि संदेशों को ध्यान से पढ़ना कितना महत्वपूर्ण है और समझें कि उनका क्या मतलब है! – ptomato

8

यह पहले से ही चिकना त्रुटि संदेश पर निहित है:

Alternatively, you may set the environment variables LIBFFI_CFLAGS and LIBFFI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.

GLib स्क्रिप्ट का निर्माण libffi खोजने के लिए pkg-config उपयोग करता है। लेकिन आप पर्यावरण चर सेट करके मैन्युअल रूप से जानकारी भी प्रदान कर सकते हैं। फिर pkg-config को कॉल आवश्यक नहीं है। ग्लिब को खुद को पीकेजी-कॉन्फ़िगर की आवश्यकता नहीं है।

समस्या का एक और समाधान pkg-config लोगों द्वारा प्रदान किया जाता है। फिर, त्रुटि संदेश के अंत में:

please set GLIB_CFLAGS and GLIB_LIBS to the correct values or pass --with-internal-glib to configure

इस परिदृश्य में, pkg-config ही सब कुछ पहले से ही अपने सिस्टम पर GLib बिना निर्माण करने के लिए आवश्यक के साथ पैक किया जाता है।

+1

यदि आपको नहीं पता कि पहला समाधान कैसे करें, दूसरा समाधान करना कोई ब्रेनर नहीं है। – ypnos

+0

उत्तर के लिए धन्यवाद। यह दूसरी तरफ से काम करता था, लेकिन ग्लिब और udev के त्रुटि संदेश अभी भी – Peter

1
export GLIB_CFLAGS="$(pkg-config --cflags glib-2.0)" 
export GLIB_LIBS="$(pkg-config --libs glib-2.0)" 
printf '# In the case of a RHEL6.5\n\tGLIB_CFLAGS=%s\n\tGLIB_LIBS=%s\n' "$GLIB_CFLAGS" "$GLIB_LIBS" 
# In the case of a RHEL6.5 
     GLIB_CFLAGS=-I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include 
     GLIB_LIBS=-lglib-2.0 

# _now_ it is a no-brainer. 
+3

क्या आप कुछ स्पष्टीकरण जोड़ सकते हैं – Narendra

0

libudev अब systemd का हिस्सा है और यह ग्लिब पर निर्भर नहीं है।

अधिकांश लिनक्स वितरण pkg-config, libudev, और glib के लिए बाइनरी प्रदान करते हैं। वे शायद पहले से ही स्थापित हैं, लेकिन यदि नहीं, तो आप उन्हें प्राप्त करने के लिए पैकेज प्रबंधक का उपयोग कर सकते हैं।

यदि आपको स्वयं को इस सामग्री को संकलित करने की आवश्यकता है, तो pkgconf का उपयोग करने पर विचार करें, जो कि पीकेजी-कॉन्फ़िगरेशन का हल्का वजन कार्यान्वयन है जो ग्लिब का उपयोग नहीं करता है।

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