खोज…


टिप्पणियों

जीसीसी (ऊपरी मामला) जीएनयू संकलक संग्रह को संदर्भित करता है। यह एक ओपन सोर्स कंपाइलर सूट है जिसमें C, C ++, ऑब्जेक्टिव C, फोरट्रान, एडा, गो और जावा के कंपाइलर शामिल हैं। gcc (लोअर केस) GNU कंपाइलर कलेक्शन में C कंपाइलर है। ऐतिहासिक रूप से जीसीसी और जीसीसी का परस्पर उपयोग किया गया है, लेकिन दो शब्दों को अलग करने का प्रयास किया जा रहा है क्योंकि जीसीसी में सी से अधिक संकलन करने के उपकरण हैं।

इस खंड में प्रलेखन gcc, GNU C संकलक को संदर्भित करेगा। इरादा सामान्य कार्यों और विकल्पों की त्वरित खोज प्रदान करना है। जीसीसी परियोजना में https://gcc.gnu.org पर विस्तृत दस्तावेज है जो दस्तावेज़ स्थापना, सामान्य उपयोग और हर कमांड लाइन विकल्प है। कृपया किसी भी प्रश्न का आधिकारिक जीसीसी प्रलेखन देखें जिसका उत्तर यहां नहीं दिया गया है। यदि जीसीसी प्रलेखन में एक निश्चित विषय स्पष्ट नहीं है, तो कृपया विशिष्ट उदाहरणों का अनुरोध करें।

संस्करण

संस्करण रिलीज़ की तारीख
7.1 2017/05/02
6.3 2016/12/21
6.2 2016/08/22
5.4 2016/06/03
6.1 2016/04/27
5.3 2015/12/04
5.2 2015/07/16
5.1 2015/04/22
4.9 2014-04-22
4.8 2013-03-22
4.7 2012-03-22
4.6 2011-03-25
4.5 2010-04-14
4.4 2009-04-21
4.3 2008/03/05
4.2 2007-05-13
4.1 2006/02/28
4.0 2005/04/20
3.4 2004/04/18
3.3 2003/05/13
3.2 2002/08/14
3.1 2002/05/15
3.0 2001/06/18
2.95 1999/07/31
2.8 1998/01/07
2.7 1995/06/16
2.6 1994/07/14
2.5 1993/10/22
2.4 1993/05/17
2.3 1992/10/31
2.2 1992/06/08
2.1 1992/03/24
2.0 1992/02/22
1.42 1992/09/20
1.41 1992/07/13
1.40 1991/06/01
1.39 1991/01/16
1.38 1990/12/21
1.37 1990/02/11
1.36 1989/09/24
1.35 1989/04/26
1.34 1989/02/23
1.33 1989/02/01
1.32 1988/12/21
1.31 1988/11/19
1.30 1988/10/13
1.29 1988/10/06
1.28 1988/09/14
1.27 1988/09/05
1.26 1988/08/18
1.25 1988/08/03
1.24 1988/07/02
1.23 1988/06/26
1.22 1988/05/22
1.21 1988/05/01
1.20 1988/04/19
1.19 1988/03/29
1.18 1988/02/04
1.17 1988/01/09
1.16 1987/12/19
1.15 1987/11/28
1.14 1987/11/06
1.13 1987/10/12
1.12 1987/10/03
1.11 1987/09/05
1.10 1987/08/22
1.9 1987/08/18
1.8 1987/08/10
1.7 1987/07/21
1.6 1987/07/02
1.5 1987/06/18
1.4 1987/06/13
1.3 1987/06/10
1.2 1987/06/01
1.1 1987/05/24
1.0 1987/05/23
0.9 1987/03/22

"नमस्ते दुनिया!" सामान्य कमांड लाइन विकल्पों के साथ

एकल स्रोत फ़ाइल वाले प्रोग्राम के लिए, gcc का उपयोग करना सरल है।

/* File name is hello_world.c */
#include <stdio.h>

int main(void)
{
    int i;
    printf("Hello world!\n");
}

कमांड लाइन से फाइल hello_world.c संकलित करने के लिए:

gcc hello_world.c

gcc तब प्रोग्राम को संकलित करेगा और फाइल a.out के लिए निष्पादन योग्य को आउटपुट करेगा। यदि आप निष्पादन योग्य नाम देना चाहते हैं, तो -o विकल्प का उपयोग करें।

gcc hello_world.c -o hello_world

इसके बाद निष्पादन योग्य को a.out के बजाय hello_world नाम दिया जाएगा। डिफ़ॉल्ट रूप से, कई चेतावनी नहीं हैं जो gcc द्वारा उत्सर्जित होती हैं। gcc के पास कई चेतावनी विकल्प हैं और जो उपलब्ध है उसे सीखने के लिए gcc प्रलेखन के माध्यम से देखना एक अच्छा विचार है। '-वैल' का उपयोग करना एक अच्छा शुरुआती बिंदु है और कई सामान्य समस्याओं को शामिल करता है।

gcc -Wall hello_world.c -o hello_world

आउटपुट:

hello_world.c: In function ‘main’:
hello_world.c:6:9: warning: unused variable ‘i’ [-Wunused-variable]
     int i;
         ^

यहाँ हम देखते हैं कि अब हमें एक चेतावनी मिली है कि चर 'i' घोषित किया गया था, लेकिन फ़ंक्शन में इसका उपयोग नहीं किया गया था।

यदि आप अपने प्रोग्राम के परीक्षण के लिए डिबगर का उपयोग करने की योजना बनाते हैं, तो आपको डीबगिंग जानकारी शामिल करने के लिए gcc को बताना होगा। डिबगिंग समर्थन के लिए '-g' विकल्प का उपयोग करें।

gcc -Wall -g hello_world.c -o hello_world

hello_world में अब GDB द्वारा समर्थित जानकारी डिबगिंग मौजूद है। यदि आप एक अलग डीबगर का उपयोग करते हैं, तो आपको अलग-अलग डिबगिंग विकल्पों का उपयोग करने की आवश्यकता हो सकती है ताकि आउटपुट सही ढंग से स्वरूपित हो। अधिक डिबगिंग विकल्पों के लिए आधिकारिक जीसीसी प्रलेखन देखें।

डिफ़ॉल्ट रूप से जीसीसी कोड को संकलित करता है ताकि डिबग करना आसान हो। gcc आउटपुट को ऑप्टिमाइज़ कर सकता है ताकि फाइनल एक्ज़ीक्यूटेबल वही परिणाम उत्पन्न करे लेकिन तेज़ प्रदर्शन हो और इसके परिणामस्वरूप छोटे आकार का निष्पादन हो सके। '-ओ' विकल्प अनुकूलन को सक्षम करता है। अनुकूलन के स्तर को निर्दिष्ट करने के लिए O के बाद जोड़ने के लिए कई मान्यता प्राप्त क्वालिफायर हैं। प्रत्येक अनुकूलन स्तर कमांड लाइन विकल्पों की एक सेट सूची को जोड़ता या हटाता है। '-O2', '-Os', '-O0' और '-Og' सबसे आम अनुकूलन स्तर हैं।

gcc -Wall -O2 hello_world.c -o hello_world

'-O2' उत्पादन-तैयार कोड के लिए सबसे आम अनुकूलन स्तर है। यह प्रदर्शन में वृद्धि और अंतिम निष्पादन योग्य आकार के बीच एक उत्कृष्ट संतुलन प्रदान करता है।

gcc -Wall -Os hello_world.c -o hello_world

'-O' '-O2' के समान है, कुछ अनुकूलन को छोड़कर जो निष्पादन योग्य आकार को बढ़ाकर निष्पादन की गति को बढ़ा सकते हैं, अक्षम हैं। यदि अंतिम निष्पादन योग्य आकार आपके लिए मायने रखता है, तो '-O' का प्रयास करें और देखें कि क्या अंतिम निष्पादन योग्य में ध्यान देने योग्य आकार अंतर है।

gcc -Wall -g -Og hello_world.c -o -hello_world

ध्यान दें कि उपरोक्त उदाहरणों में '-O' और '-O2' के साथ, '-g' विकल्प को हटा दिया गया था। ऐसा इसलिए है क्योंकि जब आप कोड को ऑप्टिमाइज़ करने के लिए कंपाइलर को बताना शुरू करते हैं, तो कोड की कुछ पंक्तियां मूल रूप से अंतिम निष्पादन योग्य डिबगिंग में मौजूद नहीं रह सकती हैं। हालांकि, ऐसे मामले भी हैं जहां कुछ त्रुटियां केवल तब होती हैं जब अनुकूलन चालू होते हैं। यदि आप अपने एप्लिकेशन को डिबग करना चाहते हैं और संकलक कोड को ऑप्टिमाइज़ करते हैं, तो '-Og' विकल्प आज़माएँ। यह gcc को उन सभी ऑप्टिमाइज़ेशन को करने के लिए कहता है जो डीबगिंग अनुभव को बाधित नहीं करना चाहिए।

gcc -Wall -g -O0 hello_world.c -o hello_world

'-O0' '-Og' की तुलना में भी कम अनुकूलन करता है। यह डिफ़ॉल्ट रूप से अनुकूलन स्तर gcc उपयोग है। यदि आप यह सुनिश्चित करना चाहते हैं कि अनुकूलन अक्षम हैं, तो इस विकल्प का उपयोग करें।

Gcc संस्करण निर्धारित करें

जीसीसी के प्रलेखन का जिक्र करते समय, आपको पता होना चाहिए कि जीसीसी का कौन सा संस्करण आप चला रहे हैं। जीसीसी परियोजना में जीसीसी के प्रत्येक संस्करण के लिए एक मैनुअल है जिसमें उस संस्करण में लागू की जाने वाली विशेषताएं शामिल हैं। आपके द्वारा चलाए जा रहे gcc के संस्करण को निर्धारित करने के लिए '-v' विकल्प का उपयोग करें।

gcc -v

उदाहरण आउटपुट:

Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-default-libstdcxx-abi=gcc4-compatible --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)

इस उदाहरण में हम देखते हैं कि हम 5.3.1 संस्करण चला रहे हैं। फिर आपको GCC 5.3 मैनुअल का संदर्भ लेना होगा। जब आप कोई संस्करण विशिष्ट समस्या रखते हैं, तो सवाल पूछते समय अपने gcc संस्करण को शामिल करना भी मददगार होता है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow