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