2010-03-23 14 views
10

मैं libqtGui.so.4 libQtNetwork.so.4 और libQtCore.so.4 को उसी निर्देशिका में शामिल करना चाहता हूं जहां मेरा ऐप रहता है। मैं क्यूटी को यह कैसे समझूंगा? वाई उद्देश्य एक स्टैंडअलोन ऐप है जो साझा पुस्तकालयों का उपयोग करता हैमैं कैसे सेट कर सकता हूं कि एक क्यूटी ऐप को क्यूटी मॉड्यूल कहां मिलता है?

+0

आप क्यूटी पुस्तकालयों के खिलाफ स्थिर रूप से लिंक करने का भी निर्णय ले सकते हैं, इस तरह आप स्थानीय क्यूटी संस्करण पर निर्भर नहीं होंगे (इस प्रकार ओपेरा लिनक्स के तहत ऐसा करने के लिए उपयोग किया जाता है) – sisis

+0

मंच पर स्थिर रूप से जोड़ने के साथ समस्या पर तैनाती यह है कि fontconfig बग किया गया है (Red Hat 5.3 fontconfig 2.4.1 का उपयोग करता है) –

+0

जब मैं स्थिर रूप से निर्माण करने का प्रयास करता हूं तो FcTypeFreeQueryFace के लिए एक अनिर्धारित संदर्भ होता है और जब मैं fontconfig को अद्यतन करने का प्रयास करता हूं तो यह मुझे बताता है कि fontconfig अद्यतित है ... ..bummer.. तब मुझे क्यूटी फाइलों को संशोधित करने का एक तरीका ढूंढना है जो कि मैं प्रदान करता हूं कि फ़ॉन्ट कॉन्फिगर के संस्करण के साथ निर्माण करने के लिए। मैं अपने ऐप को गतिशील रूप से एक फ़ॉन्ट कॉन्फ़िगर के साथ बनाने में सक्षम हूं लेकिन स्थिर रूप से –

उत्तर

8

एलडी_LIBRARY_PATH पर्यावरण चर सेट करना एक विकल्प है। उदाहरण के लिए:

export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH 

एक और विकल्प लिंकिंग के दौरान आपके क्यूटी अनुप्रयोग के आरपीएटीएच को सेट करना है। RPATH को "$ ORIGIN" मान पर सेट करने से गतिशील लिंकर आपके क्यूटी एप्लिकेशन को रनटाइम पर उसी निर्देशिका में देख सकता है। उदाहरण के लिए, यदि qmake का उपयोग कर, अपनी परियोजना फाइल करने के लिए निम्नलिखित स्निपेट जोड़ें:

unix:!mac{ 
    QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN 
    QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib 
    QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs 
    QMAKE_RPATH= 
} 

यह RPATH सेट हो जाएगा ": $ मूल/lib: $ मूल $ मूल/libs", जिसका अर्थ है कि गतिशील लिंकर होगा सबसे पहले अपने क्यूटी अनुप्रयोग के स्थान पर देखें, फिर उसके स्थान पर एक lib उपनिर्देशिका में, फिर उसके स्थान पर एक libs उपनिर्देशिका में, और अंत में किसी भी सिस्टम परिभाषित स्थानों में।

+0

काम नहीं कर रहा प्रतीत होता है। –

+0

यहां संकलन आउटपुट है: "g ++: अपरिचित विकल्प '-wl, - rpath = $ ओरिजिन'" "g ++: अपरिचित विकल्प '-wl, - rpath = $ मूल/lib'" "g ++: अपरिचित विकल्प '- wl, - rpath = $ मूल/libs ' –

+0

मैन्युअल रूप से मेकफ़ाइल में उन लोगों को हटा दिया गया है, फिर से दबाए गए फिर यह पारित हो गया ... अब इसे आज़माने के लिए। –

0

यूनिक्स/लिनक्स सिस्टम मानक libs में देखने से पहले एलडी_LIBRARY_PATH (यदि सेट) में पहले देखने जा रहा है। तो यदि आप इसे सेट करते हैं, तो आप वास्तव में ओवरराइड कर सकते हैं। विंडोज़ पर पैथ सेट करने की तरह। वही प्रभाव आदेश महत्वपूर्ण है।

आप/या जोड़ सकते हैं। एलडी_LIBRARY_PATH के साथ-साथ।

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH 
+0

मैंने कोशिश की और यह काम नहीं करता है। मैं प्रोजेक्ट में गया और एलडी_LIBRARY_PATH को बदल दिया। लेकिन जब मैं टर्मिनल पर वापस गया और टाइप किया गया तो कुछ भी नहीं बदला ./MyApp ... मैं जीयूआई से बना रहा हूं ... क्या मुझे कमांड लाइन से कोशिश करनी चाहिए? –

0

LD_LIBRARY_PATH और QMAKE_RPATH कभी मेरे लिए काम नहीं किया। इसके बजाय, मैंने फ़ाइल में QMAKE_RPATHDIR सेट किया है। उदाहरण के लिए बनाया और स्थापित करने के बाद (make install) क्यूटी, इसे /usr/local/Trolltech/Qt-4.8.5/lib/ में रखा गया है। मैं तो लिखना मेरी .pro फ़ाइल में निम्न:

QMAKE_RPATHDIR += /usr/local/Trolltech/Qt-4.8.5/lib/ 

नोट 1: संबंधित पथ काम करने के लिए नहीं लग रहे हैं। पूर्ण पथ पसंद करें।

नोट 2: जब आप तो make, आप देख सकते हैं कि निम्न विकल्प लिंकर को दिया जाता है: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/

नोट 3: यह सुनिश्चित करें कि सही पुस्तकालय के लिए द्विआधारी लिंक गतिशील रूप से, आप प्रदर्शित कर सकते हैं होना करने के लिए qVersion() द्वारा रनटाइम पर क्यूटी का संस्करण।

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