2015-05-21 7 views
7

मेरे पास एक स्थानीय साझा लाइब्रेरी है जो $ LD_LIBRARY_PATH में नहीं है। मैं अपने निष्पादन योग्य को चलाने के लिए चाहता हूं, लेकिन चूंकि यह सिस्टम फ़ोल्डर्स में साझा लाइब्रेरी नहीं ढूंढ पा रहा है, इसलिए यह "साझा लाइब्रेरी लोड करते समय त्रुटि" आउटपुट करता है।सीएमके के भीतर एलडी_LIBRARY_PATH कैसे बदला जा सकता है?

इसके लिए एक संभावित फिक्स स्थानीय पुस्तकालय फ़ोल्डर युक्त एक नया LD_LIBRARY_PATH निर्यात करना है।

मैं सीएमके के भीतर स्वचालित रूप से इस पर्यावरण चर को कैसे निर्यात कर सकता हूं?

उत्तर

2

अपने साझा lib अपने निष्पादन का एक ही CMake परियोजना में निर्माण नहीं है, तो आप CMake rpath तरह से निपटने के लिए उपयोग कर सकते इस:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

आप चलेंगे जब make install, CMake स्वचालित रूप से आपकी साझा लाइब्रेरी में अपने निष्पादन के क्रम पथ सेट हो जाएगा। इस मामले में

set(CMAKE_INSTALL_RPATH "/usr/local/lib") 
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

आप अपने आप को निर्देशिका है जहाँ आपकी साझा लाइब्रेरी क्रम पथ के लिए स्थापित किया जाएगा जोड़ना होगा: आपकी साझा लाइब्रेरी में एक ही CMake परियोजना में बनाया गया है

हैं, तो इस का उपयोग करें।

अधिक जानकारी के लिए, आप CMake rpath handling

6

आप कर सकते हैं -rpath लिंकर विकल्प का उपयोग क्रम साझा लाइब्रेरी खोज पथ सेट:

SET(CMAKE_EXE_LINKER_FLAGS 
      "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib") 
+0

पढ़ सकते हैं जो बहुत मदद करता है! – dontloo

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