Avatar ·

C++ में कंपाइलेशन और लिंकिंग प्रक्रिया कैसे काम करती है?

सभी को नमस्ते! मैंने हाल ही में C++ सीखना शुरू किया है, और मुझे इस बात को लेकर भ्रम है कि जब मैं "Build" बटन दबाता हूँ या टर्मिनल में g++ चलाता हूँ तो उसके बाद क्या होता है। मैंने दो फाइलों का एक सरल प्रोग्राम लिखा है: `main.cpp` और `utils.cpp`। `utils.cpp` में मेरे पास एक function `void sayHello()` है जो कंसोल में "Hello!" प्रिंट करता है। `main.cpp` में मैं इस function को extern (`extern void sayHello();`) के रूप में declare करता हूँ और इसे call करता हूँ। जब मैं इसे `g++ main.cpp utils.cpp -o program` कमांड से compile करता हूँ, तो सब कुछ काम करता है। लेकिन मुझे समझ नहीं आता कि compiler वास्तव में क्या करता है और linker क्या करता है। अगर मैं function declaration में टाइपिंग की गलती करूँ (जैसे, `sayHelllo` लिखूँ), तो मुझे compilation के बजाय linking के दौरान error क्यों मिलता है? और .o files कहाँ से आती हैं जो कभी-कभी प्रोजेक्ट फोल्डर में दिखाई देती हैं? खासकर मुझे यह भ्रमित करता है