मैं ऐसा करने के लिए कम से कम 3 तरीके से आया हूं और मैं सोच रहा हूं कि मुहावरेदार तरीका क्या है। यह किसी भी स्थैतिक पुस्तकालय के लिए लगभग सार्वभौमिक रूप से किया जाना चाहिए। मुझे आश्चर्य है कि सीएमके में मेकफाइल जनरेटर स्वचालित रूप से स्थैतिक पुस्तकालयों में इसे शामिल नहीं करता है। (जब तक मैं कुछ याद नहीं कर रहा हूँ?)
target_compile_options(myLib PRIVATE -fPIC)
add_compile_options(-fPIC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpic")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")
मेरा मानना है कि अन्य बदलाव भी हो सकते हैं। (अगर आपको एक मिल जाए तो कृपया मेरे प्रश्न को संपादित करें)
यदि आप इस प्रश्न का उत्तर जानते हैं, तो क्या आप यह भी जानते हैं कि क्या कोई पार्टी सीएमके प्रोजेक्ट को इस झंडे के साथ संकलित किए जाने का एक तरीका है, बिना इसकी CMakeLists.txt फ़ाइल को संशोधित किए? मैंने उस झंडे को याद करते हुए स्थिर पुस्तकालयों को चलाया है। यह एक स्थैतिक पुस्तकालय को गतिशील पुस्तकालय में संकलित करते समय समस्याओं का कारण बनता है।
आपको मिला:
relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpic")
मेरे लिए काम किया।