पर .dylib के इंस्टॉल नाम को मैं कैसे संशोधित करूं मैं मैक ओएस एक्स (10.7.1) पर C++ के लिए google-gflags कमांडलाइन फ़्लैग लाइब्रेरी का निर्माण कर रहा हूं।बिल्ड समय
$ ./configure --prefix=output
$ make
$ make install
मैं निर्माण समय पर उत्पन्न साझा लाइब्रेरी के नाम पर स्थापित बदलने के लिए और बाद में install_name_tool
का उपयोग नहीं करना चाहते हैं: निर्माण प्रक्रिया के रूप में है।
$ otool -L ./output/libgflags.dylib
$ ./output/libgflags.dylib:
/tmp/gflags-1.5/output/lib/libgflags.0.dylib (compatibility version 2.0.0, current version 2.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
ld(1)
के लिए आदमी पेज एक -install_name
विकल्प जो एक गतिशील का नाम स्थापित बदलने के लिए इस्तेमाल किया जा सकता है:
डिफ़ॉल्ट रूप से, उत्पन्न साझा लाइब्रेरी, libgflags.dylib
की install name, उत्पादन मार्ग है लिंक-टाइम पर लाइब्रेरी।
उदाहरण के लिए, एक डमी कार्यक्रम के साथ:
$ g++ -dynamiclib temp.cc -install_name /tmp/temp.dylib -o temp.dylib
$ otool -L temp.dylib
temp.dylib:
/tmp/temp.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
लेकिन, मुझे ./configure
स्क्रिप्ट के साथ इस कमांड लाइन विकल्प का उपयोग करने में असमर्थ हूँ। मैं मैन्युअल CFLAGS
चर स्थापित करने की कोशिश की है, लेकिन यह एक त्रुटि में परिणाम है:
$ CFLAGS="-install_name /tmp/desired/location/libgflags.dylib" ./configure
checking for a BSD-compatible install... /opt/local/bin/ginstall -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/Users/vibhav/Code/install_name_test/gflags-1.5':
configure: error: C compiler cannot create executables
तो, यह मेरे install_name_tool
का उपयोग किए बिना configure
और make
द्वारा उत्पन्न .dylib का नाम स्थापित बदलने के लिए संभव है?
मुझे समझ में नहीं आता कि आप क्या करने की कोशिश कर रहे हैं। आप बस './configure --prefix/tmp/वांछित/स्थान' क्यों नहीं चला सकते? – adl
यह एक वैध सवाल है। मैं विभिन्न कारणों से उस स्थान पर '--prefix' सेट नहीं कर सकता, जिसमें मेरा निर्माण स्थान मेरे एप्लिकेशन के" इंस्टॉल "स्थान से अलग है। मैं बस 'कॉन्फ़िगरेशन' का उपयोग करते समय उचित लिंकर ध्वज पास करना चाहता हूं। – v8891
आपका परिदृश्य अभी भी मुझे स्पष्ट नहीं है। क्या आप समझा सकते हैं कि आपके सेटअप के लिए मानक './configure --prefix/कहीं और && बनाना && इंस्टॉल करना गलत है? आपका निर्माण स्थान क्यों मायने रखता है? (आपको निश्चित रूप से एक पूर्ण उपसर्ग का उपयोग करना चाहिए।) क्या आप इसे इंस्टॉल किए बिना 'libglflags' से लिंक करने का प्रयास कर रहे हैं? (उस स्थिति में आपको 'libflol.la'' के साथ अपने आवेदन को लिंक करने के लिए 'libtool' का उपयोग करना चाहिए और libtool को अपने जादू को गैर-स्थापित लाइब्रेरी से लिंक करने दें।) क्या आप लाइब्रेरी को अस्थायी स्थान पर स्थापित करना चाहते हैं अपने अंतिम स्थान पर प्रतिलिपि बनाई गई? (यह DESTDIR चर के लिए एक नौकरी है।) – adl