2011-09-21 13 views
14

मैं .so खोज पथ सेट करने के लिए -rpath लिंकर विकल्प का उपयोग करना चाहता हूं। मैं इसे [app_path]/../lib खोजना चाहता हूं। मैं अपने qmake .pro फ़ाइल में जोड़ने की कोशिश की है:

QMAKE_LFLAGS += -Wl,-rpath=$ORIGIN/../lib/ 

लेकिन qmake अपने प्रोजेक्ट इस तरह से लिंक करता है:

g++ -Wl,-rpath=RIGIN/../lib/ -Wl,-O1 -o myoutput main.o [...] 

मैं कैसे बच सकते हैं $ORIGIN?

उत्तर

10

आप $ORIGIN जबकि आप बस अपने .pro फाइल करने के लिए इस जोड़ सकते हैं का निर्माण होने के लिए (ठीक से) का मूल्यांकन चाहते हैं DOLLAR = $

QMAKE_LFLAGS + = -Wl, -rpath = $$ {DOLLAR} $$ {DOLLAR} मूल /../ myLibs

+0

दिलचस्प। क्या यह एक नया विकल्प है? –

+1

मैंने इसे यहां खोजा था जबकि मैं 'QMAKE_RPATH' काम करने की कोशिश कर रहा था: [QTBUG-8110] (https://bugreports.qt-project.org/browse/QTBUG-8110)। इस लिंक के अनुसार 'QMAKE_RPATH' और 'QMAKE_LFLAGS_RPATH' अब और काम नहीं करते हैं। 'QMAKE_RPATHDIR' कम से कम क्यूटी 4.8.4 और क्यूटी 4.8.5 के साथ मेरे लिए काम करता है। – Aurelien

+0

यह यहां परिभाषित किया गया है: [qmake परिवर्तनीय संदर्भ] (http://doc.qt.digia.com/qt/qmake-variable-reference.html#qmake-rpathdir) – Aurelien

21

मैं here एक तरह से ठीक से बचने के लिए मिला:

QMAKE_RPATHDIR += $ORIGIN/../mylibs 
+4

मैंने सोचा कि मैं उल्लेख करता हूं कि मुझे मेरे लिए काम करने के लिए '-z उत्पत्ति' जोड़ना था। तो सभी एक साथ, यह 'QMAKE_LFLAGS + =' -Wl, -rpath, \ '$ $ ORIGIN /../ lib \', - z, origin 'है। –

+0

यह सही उत्तर है। मुझे काम करने के लिए QMAKE_RPATHDIR नहीं मिल सका, और नेट पर संकेत मिलता है कि वास्तव में QMAKE_RPATHDIR काम नहीं करता है। –

1

यह वास्तव में एक पुराना सवाल है, लेकिन लोगों के लिए खोज के माध्यम से यहां आने के लिए: पुराने उत्तरों में वर्णित विधियों की अब आवश्यकता नहीं है। के रूप में प्रयोग कर रहे हैं जब तक makefile के लिए स्वचालित रूप

QMAKE_RPATHDIR += lib 

यह जरूरत प्रविष्टियों ($ORIGIN और -Wl,-z,origin जहां जरूरत भी शामिल है) जोड़ना होगा, आधुनिक क्यूटी संस्करण (मेरे मामले में 5.9), तो आप सिर्फ इस का उपयोग करने की अनुमति एक सापेक्ष निर्देशिका। मतलब है कि lib आवश्यक "मूल" प्रविष्टियों का उत्पादन करेगा, जबकि /lib जैसे कुछ नहीं होगा। QMAKE_RPATHDIR में जो भी सापेक्ष निर्देशिका आप जोड़ती है उसे स्वचालित रूप से $ORIGIN से संबंधित किया जाएगा।

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