जो भी टोकन $ ऑरिजिन बनाने का फैसला करता है वह एक बुराई है जो प्रोग्रामर नरक में एक विशेष स्थान के योग्य है। चूंकि '$' बैश और अन्य स्क्रिप्टिंग भाषाओं जैसे विशेष चरित्र है, इसलिए सावधानी से बचने तक यह सब कुछ खराब कर देता है। इससे भी बदतर, आप जिस निर्माण वातावरण का उपयोग कर रहे हैं उसके आधार पर, ठीक से बचने के तरीके के बारे में बताए गए बदलावों में बदलाव आएगा।
बैश में, आप $ के सामने एक बैकस्लैश छड़ी की जरूरत है:
-Wl,-R\$ORIGIN
कोड :: ब्लाकों जाहिरा तौर पर भी विशेष रूप में $ व्यवहार करता है। फिर, जो भी subprocess नियंत्रक कोड :: ब्लॉक बैकस्लैश विशेष के रूप में व्यवहार करने के लिए आदेश भेजता है। इसलिए, बैकस्लैश और $ दोनों को ठीक से बचने के लिए दोगुनी होने की आवश्यकता है। इसलिए, कोड :: ब्लाकों लिंकर सेटिंग्स में, आप निर्दिष्ट करना होगा: ...
-Wl,-R\\$ORIGIN
निर्माण लॉग में, लेकिन खोल वास्तव में भेज दिया जाता है:
-Wl,-R\\$$ORIGIN
... जो आउटपुट:
-Wl,-R\$ORIGIN
... जैसा ऊपर बताया गया है वांछित परिणाम उत्पन्न करता है।
क्या दर्द है।
संबंधित है, लेकिन specifc नहीं संहिता :: ब्लाकों के लिए: http://stackoverflow.com/q/6324131/257299 – kevinarpe