Compilation process c In Hindi
किसी भी यूजर क्रिएटेड C प्रोग्राम में कम्पाइलेशन प्रोसेस एक सीरीज ऑफ़ प्रोसेस सीक्वेंस या स्टेप बाय स्टेप प्रोसेस मेथड है, जिससे किसी भी C प्रोग्राम सोर्स कोड को एक एग्जीक्यूटेबल प्रोग्राम फाइल में कन्वर्ट किया जाता है. जिससे कोई भी विंडोज बेस्ड हार्डवेयर मशीन या कंप्यूटर पर इसे आसानी से रन किया सके।

एक प्रोग्रामर या सॉफ्टवेयर डेवलपर द्वारा बनाया गया कोई भी C प्रोग्राम सामान्य रूप से .c एक्सटेंशन वाली फ़ाइल में मर्ज या स्टोर होता है। याद रहे, आपका मौजूदा कंप्यूटर इस ह्यूमन-रीडेबल प्रोग्राम सोर्स कोड को डायरेक्ट एग्जीक्यूट नहीं कर सकता है। इसे किसी कंप्यूटर में इंस्टालेशन से पहले कई स्टेज या प्रोसेस से गुजरना होगा।
The complete process of program compilation in C programming.
एक सामान्य C प्रोगाम में कम्पाइलेशन प्रोसेस को कुछ इस तरह डिस्प्ले किया जा सकता है.
Any C program source code → preprocessor directives → compiler software → assembler software → data linker → executable C file conversion
For example.
testprogram.c
↓
Preprocessing Directive
↓
testprogram.i
↓
Compilation Process
↓
testprogram.s
↓
Assembly Conversion
↓
testprogram.o
↓
Linking Data
↓
testprogram / testprogram.exe
A basic C program source code.
C प्रोग्रामिंग में कम्पाइलेशन प्रोसेस का सबसे पहला स्टेप C प्रोग्राम को नोटपैड या अन्य लिनक्स, मैक, टेक्स्ट एडिटर या ग्राफिकल आईडीई सॉफ्टवेयर में प्रोग्राम सोर्स कोड क्रिएट करना होता है।
For example.
#include <stdio.h>
int main()
{
printf(“Welcome to Vcanhelpsu”);
return 0;
}
यहाँ यूजर क्रिएटेड प्रोग्राम .c फाइल एक्सटेंशन के साथ आटोमेटिक सेव हो जाता है.
जैसे, welcome.c
C प्रोग्रामिंग में प्रोग्राम सोर्स कोड को ऐसे क्रिएट किया जाता है, जो इजीली ह्यूमन रीडेबल आर्डर या फॉर्मेट हो, लेकिन प्रोसेसर डायरेक्टिव इसे डायरेक्ट एग्जीक्यूट नहीं कर सकता है।
C Programming Preprocessing Directives.
C प्रोग्रामिंग में प्रोग्राम सोर्स कोड में प्रीप्रोसेसर डायरेक्टिव कम्पाइलेशन प्रोसेस का सबसे पहला स्टेप है।
यह C प्रोग्राम सोर्स कोड में सभी प्रीप्रोसेसर डायरेक्टिव टास्क एक्टिविटीज को हैंडल या मैनेज करता है, जो # साइन से स्टार्ट होता हैं।
Some common preprocessor directive examples in C programming.
#include
#define
#ifdef
#ifndef
#endif
For example.
#include <stdio.h>
#define PI 3.14
During preprocessing tasks in C programming.
- यूजर डिफाइन C प्रोग्राम में हेडर फ़ाइलें प्रोग्राम के टॉप में शामिल की जाती हैं।
- यह प्रोग्राम में यूज़ मैक्रोज़ को एक्सपैंड किया जाता है।
- यूजर डिफाइन C प्रोग्राम कंडीशनल कम्पाइलेशन डायरेक्टिव प्रोसेस किए जाते हैं।
- मौजूदा प्रोग्राम में यूजर डिफाइन कस्टम कमेंट्स सामान्य रूप से इग्नोर कर दिए जाते हैं।
- इसके अलावा अन्य C प्रोग्राम प्रीप्रोसेसिंग टास्क ऑपरेशन परफॉर्म किए जाते हैं।
- C प्रोग्राम का आउटपुट एक एक्सपैंडेड सोर्स फ़ाइल के रूप में होता है, जिसे C प्रोग्राम में ट्रेडिशनली .i एक्सटेंशन से रिप्रेजेंट किया जाता है।
welcome.c → Preprocessor → welcome.i
Compilation process in a C program.
- प्रीप्रोसेसिंग डायरेक्टिव टास्क या स्टेज के बाद, एक्सपैंडेड C प्रोग्राम सोर्स कोड कंपाइलर को मूव कर दिया किया जाता है।
- कंपाइलर C प्रोग्राम सोर्स कोड को टारगेट प्रोसेसर के लिए असेंबली लैंग्वेज में ट्रांसलेट या कन्वर्ट कर देता है।
During this stage, the C program compiler performs the following tasks.
- मौजूदा C प्रोग्राम सोर्स कोड के सिंटैक्स को प्रॉपर चेक करना
- C प्रोग्राम सोर्स कोड में कुछ सिमेंटिक रूल्स को चेक करना
- जरूरत के अनुसार C प्रोग्राम सोर्स कोड को ऑप्टिमाइज़ेशन करना
- C प्रोग्राम सोर्स कोड स्टेटमेंट्स को लोअर-लेवल इंस्ट्रक्शन्स में ट्रांसलेट करना
For example.
जैसे किसी C प्रोग्राम सोर्स कोड में कोई इनवैलिड स्टेटमेंट मौजूद है.
int total = ;
तो कंपाइलर उस प्रोग्राम में एक कंपाइलेशन एरर रिपोर्ट को डिस्प्ले करता है।
प्रोग्राम आउटपुट सामान्य रूप से .s एक्सटेंशन वाली एक असेंबली फ़ाइल से जनरेट होती है।
welcome.i → compiler → welcome.s
Assembly language compiler.
- असेंबलर कंपाइलर द्वारा डेवलप की गई असेंबली लैंग्वेज प्रोग्राम सोर्स कोड को मशीन लैंग्वेज कोड में कन्वर्ट करता है।
- मशीन प्रोग्राम सोर्स कोड में बाइनरी इंस्ट्रक्शन्स होते हैं, जिन्हें आपके कंप्यूटर का प्रोसेसर सीपीयू डायरेक्ट एग्जीक्यूट कर सकता है।
- असेंबलर एक ऑब्जेक्ट फ़ाइल को क्रिएट करता है, जिस फाइल का एक्सटेंशन सामान्य रूप से यूनिक्स या लिनक्स जैसे ऑपरेटिंग सिस्टम पर .o या माइक्रोसॉफ्ट विंडोज टूलचेन पर .obj होता है।
- welcome.s → Assembler → welcome.o
- ऑब्जेक्ट प्रोग्राम सोर्स कोड फ़ाइल में मशीन-कोड इंस्ट्रक्शन होते हैं, लेकिन यह अभी एक कम्पलीट एग्जीक्यूटेबल C प्रोग्राम नहीं हो सकता है।
Linking Process in a C Program
- नेक्स्ट C प्रोग्राम सोर्स कोड स्टेज में प्रोग्राम कोड को लिंकर लिंक करता है।
- एक C प्रोग्राम ज्यादातर लाइब्रेरी से मिलने वाले फंक्शन का यूज़ करता है।
For example.
printf(“Welcome to c language”);
printf() यह C प्रोग्राम में स्टैंडर्ड लाइब्रेरी से मिलता है।
The linker combines the following into a C program.
- ऑब्जेक्ट फ़ाइलें बनाता
- ज़रूरी लाइब्रेरी कोड शामिल करता है
- अन्य ज़रूरी कंपोनेंट को C प्रोग्राम में ऐड करता है
- यह C प्रोग्राम के अलग-अलग पोरशन के बीच रेफरेंस को भी रिज़ॉल्व करता है।
For example.
welcome.o + C library
↓
Linker
↓
Executable
यहाँ इस प्रोसेस में कोई ज़रूरी फ़ंक्शन या सिंबल नहीं मिल पाता है, तो लिंकर “अनडिफ़ाइंड रेफ़रेंस” या “अनरिसोल्व्ड एक्सटर्नल सिंबल” जैसी प्रोग्राम एरर को डिस्प्ले कर सकता है।
Creating an executable file.
सक्सेस्फुल C प्रोग्राम लिंकिंग प्रोसेस के बाद, फ़ाइनल C प्रोग्राम एग्जीक्यूटेबल फ़ाइल डेवलप होती है।
कई लिनक्स बेस्ड डिस्ट्रो ऑपरेटिग सिस्टम पर, C प्रोग्राम एग्जीक्यूटेबल फाइल का नाम अलग हो सकता है.
welcome
माइक्रोसॉफ्ट विंडोज ऑपरेटिंग सिस्टम पर, C प्रोग्राम का सामान्य रूप से .exe एक्सटेंशन होता है.
welcome.exe
विंडोज ऑपरेटिंग सिस्टम इस C प्रोग्राम एग्जीक्यूटेबल फाइल को मेमोरी में लोड कर सकता है, और इसका एग्जीक्यूशन स्टार्ट कर सकता है।
C program example using the GCC compilation process.
यहाँ माना की हमारे पास एक C प्रोग्राम सोर्स कोड है, जिसका नाम है.
testprogram.c
हम इसे GCC कम्पाइलर का यूज़ करके इस प्रोग्राम को कम्पाइल कर सकते हैं.
gcc testprogram.c -o testprogram
यह कमांड कमांड सामान्य रूप से एक ज़रूरी टास्क है, और testprogram नाम का एक एग्जीक्यूटेबल फाइल को क्रिएट करता है।
This stage can also be viewed differently.
gcc -E testprogram.c -o testprogram.i
प्रीप्रोसेसिंग टास्क.
gcc -S testprogram.i -o testprogram.s
असेंबली में कम्पाइलेशन के लिए.
gcc -c testprogram.s -o testprogram.o
असेंबली प्रोसेस के लिए.
gcc testprogram.o -o testprogram
लिंकिंग प्रोसेस के लिए.
जिसके आउटपुट में testprogram फ़ाइल एग्जीक्यूटेबल प्रोग्राम है।
Compilation Process Diagram.
C प्रोग्राम सोर्स कोड
↓
प्रीप्रोसेसिंग डायरेक्टिव
↓
एक्सपैंडेड सोर्स कोड
↓
कम्पाइलेशन प्रोसेस
↓
असेंबली सोर्स कोड कन्वर्शन
↓
असेंबली
↓
ऑब्जेक्ट सोर्स कोड
↓
लिंकिंग प्रोसेस
↓
एग्जीक्यूटेबल प्रोग्राम डेवलपमेंट
↓
फाइनल एग्जीक्यूशन
↓
प्रोग्राम आउटपुट
Displaying C Program Source Code Errors at Different Stages.
C प्रोग्राम सोर्स कोड प्रोसेस कम्पाइलेशन के दौरान अलग-अलग तरह के एरर डिस्प्ले या जनरेट हो सकते हैं.
| C program stage | Common error display in c program compilation process |
| Preprocessing directive | It displays any missing header file, incorrect macro usages error in c program |
| Compilation process | It displays any syntax error, type-related error in active c program |
| Assembly conversion | It checks or analyses invalid assembly instruction in active c program |
| Linking stage | It checks any undefined reference, missing library in active c program |
| Final execution | It displays all runtime errors such as division by zero or invalid memory access issues in c file |
Conclusion of the Compilation Process in C.
C प्रोग्राम सोर्स कोड कम्पाइलेशन प्रोसेस में मुख्य रूप से चार बड़े ट्रांसलेशन स्टेज या स्टेप इन्क्लुड होते हैं.
- Preprocessing Directives – किसी भी C प्रोग्राम सोर्स कोड को #include और #define जैसे हैडर फाइल या डायरेक्टिव से प्रोसेस करता है।
- Compilation Process – यह प्रीप्रोसेस्ड C प्रोग्राम सोर्स कोड को असेंबली कोड में कन्वर्ट करता है।
- Assembly Translation – यह असेंबली प्रोग्राम सोर्स कोड को मशीन-लेवल ऑब्जेक्ट कोड में कन्वर्ट करता है।
- Linking Process – यह C प्रोग्राम सोर्स कोड को एग्जीक्यूटेबल फाइल में कन्वर्ट करने के लिए ऑब्जेक्ट कोड को ज़रूरी लाइब्रेरी के साथ कंबाइन या मर्ज करता है।
So, the flow of a complete C program source code is as follows.
C प्रोग्राम सोर्स कोड (.c) → प्रीप्रोसेसर डायरेक्टिव → कंपाइलर प्रोसेस → असेंबलर ट्रांसलेशन → लिंकर प्रोसेस → एग्जीक्यूटेबल फ़ाइल बनाना।

