আমি এটি করার জন্য কমপক্ষে 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")
আমি বিশ্বাস করি এর অন্যান্য বিভিন্নতাও থাকতে পারে। (আপনি যদি একটি প্রশ্ন পান তবে আমার প্রশ্নটি সম্পাদনা করুন)
আপনি যদি এই প্রশ্নের উত্তর জানতেই পারেন, আপনি কি এটাও জানেন যে কোনও তৃতীয় পক্ষের সিএমকে প্রকল্পের সিএমকেলিস্ট.টিএসটিএসটি ফাইল পরিবর্তন না করে এই পতাকাটি সংকলিত করার কোনও উপায় আছে কিনা? আমি স্থিত লাইব্রেরি জুড়ে চালিয়েছি যে পতাকাটি অনুপস্থিত। স্থির গ্রন্থাগারকে একটি গতিশীল লাইব্রেরিতে সংকলন করার সময় এটি সমস্যার সৃষ্টি করে।
তুমি পাও:
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")
আমার জন্য কাজ করেছে।