मेरे पास एक निष्पादन योग्य है जो कई रूप से लोड करता है। इसलिए पुस्तकालय, उनमें से सभी मेरे द्वारा निर्मित किए गए हैं। तैनाती, या कम से कम परीक्षण/डिबगिंग के लिए, मैं उन सब को एक ही निर्देशिका में करना चाहते हैं:लिनक्स आरपीएथ में निष्पादन योग्य स्थान को एन्कोड कैसे करें?
my_executable
libmylib1.so
libmylib2.so
परोक्ष पुस्तकालयों लोड करने के लिए निष्पादन योग्य पाने के लिए, मैं एक rpath निर्धारित करना चाहते हैं (DT_RUNPATH) निष्पादन योग्य निर्देशिका के लिए। ओएस एक्स के साथ, मैं तो जैसे ऐसा करने चाहते हैं:
clang -dynamiclib -o libmylib1.dylib -install_name @rpath/libmylib1.dylib src1.c src2.c
clang -dynamiclib -o libmylib2.dylib -install_name @rpath/libmylib2.dylib src3.c src4.c
clang -o my_executable -L. -llibmylib1.so -llibmylib2.so -Wl,-rpath,@loader_path/. main.c
सूचना @loader_path/.
कि लिनक्स के साथ ओएस एक्स में निष्पादन के rpath रूपों, निकटतम मैं यह करने के लिए आ सकते हैं
gcc -dynamiclib -o libmylib1.so src1.c src2.c
gcc -dynamiclib -o libmylib2.so src3.c src4.c
gcc -o my_executable -L. -llibmylib1.so -llibmylib2.so -Wl,-rpath=. main.c
यहां समस्या यह है कि लिनक्स पर आरपीएथ वर्तमान कार्यशील निर्देशिका का पालन करता है, निष्पादन योग्य निर्देशिका नहीं। लिनक्स पर एक ही चीज़ को पूरा करने का कोई तरीका है?
वह था! धन्यवाद। –