Avatar ·

GCC में -fPIC फ्लैग क्या है और लाइब्रेरी बनाते समय इसकी आवश्यकता क्यों है?

सभी को नमस्ते! मैंने C++ सीखना शुरू किया है और GCC के साथ Linux पर एक dynamic library (.so) बनाने की कोशिश कर रहा हूँ। मैं हर जगह देखता हूँ कि लाइब्रेरी के लिए objects compile करते समय -fPIC फ्लैग जोड़ा जाता है, लेकिन मुझे समझ नहीं आता कि इसकी आवश्यकता क्यों है। यहाँ मेरा सरल उदाहरण है। `math_utils.cpp` फ़ाइल है: ```cpp int add(int a, int b) { return a + b; } int multiply(int a, int b) { return a * b; } ``` मैं इस तरह compile करता हूँ: ```bash g++ -c math_utils.cpp -o math_utils.o g++ -shared math_utils.o -o libmath.so ``` और यह काम करता है! लाइब्रेरी बन जाती है, प्रोग्राम इसे link करता है और functions का उपयोग करता है। लेकिन अगर मैं -fPIC जोड़ूं: ```bash g++ -c -fPIC math_utils.cpp -o math_utils.o ``` तो परिणाम वही है। क्या अंतर है? जब मैंने Google किया, तो लिखा था कि x86_64 पर -fPIC के बिना error हो सकती है, लेकिन मेरे पास सब कुछ compile हो जाता है। समझाएं।