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` लिखूँ), तो मुझे linking stage पर error क्यों मिलता है, न कि compilation पर? और .o फाइलें कहाँ से आती हैं जो कभी-कभी प्रोजेक्ट फोल्डर में दिखाई देती हैं?
विशेष रूप से मुझे इस बात से भ्रम है कि...