ããä»ä¹æ¯GCCï¼GCCæ¯ç±GNUä¹ç¶Stallmanæå¼åçlinuxä¸çç¼è¯å¨ï¼å
¨ç§°ä¸ºGNU Compiler Collectionï¼ ç®åå¯ä»¥ç¼è¯çè¯è¨å
æ¬ï¼C, C++, Objective-C, Fortran, Java, and Ada, å¯ä»¥å¨å
¶å®æ¹é¡µé¢æ¾å°æ´å 详ç»çä¿¡æ¯ä»ä¹æ¯GCCï¼GCCæ¯ä¸ä¸ªåæ¬ç¨äºUnix-likeç³»ç»ä¸ç¼ç¨çç¼è¯å¨ãä¸è¿ï¼ç°å¨GCCä¹æäºè®¸å¤Win32ä¸ç移æ¤çæ¬ãè¿è¦æè°¢Internetä¸ä¼å¤ç¨åºåçå
±ååªåãGCCçåå²
GCCæ¯GNUå
¬ç¤¾çä¸ä¸ªé¡¹ç®ãæ¯ä¸ä¸ªç¨äºç¼ç¨å¼åçèªç±ç¼è¯å¨ãæåï¼GCCåªæ¯ä¸ä¸ªCè¯è¨ç¼è¯å¨ï¼ä»æ¯GNU C Compiler çè±æ缩åãéçä¼å¤èªç±å¼åè
çå å
¥åGCCèªèº«çåå±ï¼å¦ä»çGCC以ç»æ¯ä¸ä¸ªå
å«ä¼å¤è¯è¨çç¼è¯å¨äºãå
¶ä¸å
æ¬ C,C++,Ada,Object CåJavaçãæ以ï¼GCCä¹ç±åæ¥çGNU C Compilerå为GNU Compiler Collectionãä¹å°±æ¯ GNUç¼è¯å¨å®¶æ çææãå½ç¶ï¼å¦ä»çGCCåå©äºä»çç¹æ§ï¼å
·æäºäº¤åç¼è¯å¨çåè½ï¼å³å¨ä¸ä¸ªå¹³å°ä¸ç¼è¯å¦ä¸ä¸ªå¹³å°ç代ç ã
ç´å°ç°å¨ï¼GCCçåå²ä»ç¶å¨ç»§ç»ï¼ä»çä¼ å¥ä»ç¶è¢«äººæä¼ é¢ãGCCæä»ä¹ä½ç¨ï¼Linuxç³»ç»ä¸çGccï¼GNU C Compilerï¼æ¯GNUæ¨åºçåè½å¼ºå¤§ãæ§è½ä¼è¶çå¤å¹³å°ç¼è¯å¨ï¼æ¯GNUç代表ä½åä¹ä¸ãgccæ¯å¯ä»¥å¨å¤ç§ç¡¬ä½å¹³å°ä¸ç¼è¯åºå¯æ§è¡ç¨åºçè¶
级ç¼è¯å¨ï¼å
¶æ§è¡æçä¸ä¸è¬çç¼è¯å¨ç¸æ¯å¹³åæçè¦é«20%~30%ãGCCæä»ä¹ä½ç¨ï¼Gccç¼è¯å¨è½å°CãC++è¯è¨æºç¨åºãæ±ç¨å¼ååºåç®æ ç¨åºç¼è¯ãè¿æ¥æå¯æ§è¡æ件ï¼å¦æ没æç»åºå¯æ§è¡æ件çååï¼gccå°çæä¸ä¸ªå为a.outçæ件ãå¨Linuxç³»ç»ä¸ï¼å¯æ§è¡æ件没æç»ä¸çåç¼ï¼ç³»ç»ä»æ件çå±æ§æ¥åºåå¯æ§è¡æ件åä¸å¯æ§è¡æ件ãègccåéè¿åç¼æ¥åºå«è¾å
¥æ件çç±»å«ï¼ä¸é¢æ们æ¥ä»ç»gccæéµå¾ªçé¨å约å®è§åã
.c为åç¼çæ件ï¼Cè¯è¨æºä»£ç æ件ï¼
.a为åç¼çæ件ï¼æ¯ç±ç®æ æ件ææçæ¡£æ¡åºæ件ï¼
.Cï¼.ccæ.cxx 为åç¼çæ件ï¼æ¯C++æºä»£ç æ件ï¼
.h为åç¼çæ件ï¼æ¯ç¨åºæå
å«ç头æ件ï¼
.i 为åç¼çæ件ï¼æ¯å·²ç»é¢å¤çè¿çCæºä»£ç æ件ï¼
.ii为åç¼çæ件ï¼æ¯å·²ç»é¢å¤çè¿çC++æºä»£ç æ件ï¼
.m为åç¼çæ件ï¼æ¯Objective-Cæºä»£ç æ件ï¼
.o为åç¼çæ件ï¼æ¯ç¼è¯åçç®æ æ件ï¼
.s为åç¼çæ件ï¼æ¯æ±ç¼è¯è¨æºä»£ç æ件ï¼
.S为åç¼çæ件ï¼æ¯ç»è¿é¢ç¼è¯çæ±ç¼è¯è¨æºä»£ç æ件ãGCCæä»ä¹ä½ç¨ï¼Gccçæ§è¡è¿ç¨
è½ç¶æ们称Gccæ¯Cè¯è¨çç¼è¯å¨ï¼ä½ä½¿ç¨gccç±Cè¯è¨æºä»£ç æ件çæå¯æ§è¡æ件çè¿ç¨ä¸ä»
ä»
æ¯ç¼è¯çè¿ç¨ï¼èæ¯è¦ç»åå个ç¸äºå
³èçæ¥éª¤â¶é¢å¤ç(ä¹ç§°é¢ç¼è¯ï¼Preprocessing)ãç¼è¯(Compilation)ãæ±ç¼(Assembly)åè¿æ¥(Linking)ã
å½ä»¤gccé¦å
è°ç¨cppè¿è¡é¢å¤çï¼å¨é¢å¤çè¿ç¨ä¸ï¼å¯¹æºä»£ç æ件ä¸çæ件å
å«(include)ãé¢ç¼è¯è¯å¥(å¦å®å®ä¹defineç)è¿è¡åæãæ¥çè°ç¨cc1è¿è¡ç¼è¯ï¼è¿ä¸ªé¶æ®µæ ¹æ®è¾å
¥æ件çæ以.o为åç¼çç®æ æ件ãæ±ç¼è¿ç¨æ¯é对æ±ç¼è¯è¨çæ¥éª¤ï¼è°ç¨asè¿è¡å·¥ä½ï¼ä¸è¬æ¥è®²ï¼.S为åç¼çæ±ç¼è¯è¨æºä»£ç æ件åæ±ç¼ã.s为åç¼çæ±ç¼è¯è¨æ件ç»è¿é¢ç¼è¯åæ±ç¼ä¹åé½çæ以.o为åç¼çç®æ æ件ãå½ææçç®æ æ件é½çæä¹åï¼gccå°±è°ç¨ldæ¥å®ææåçå
³é®æ§å·¥ä½ï¼è¿ä¸ªé¶æ®µå°±æ¯è¿æ¥ãå¨è¿æ¥é¶æ®µï¼ææçç®æ æ件被å®æå¨å¯æ§è¡ç¨åºä¸çæ°å½çä½ç½®ï¼åæ¶ï¼è¯¥ç¨åºæè°ç¨å°çåºå½æ°ä¹ä»åèªæå¨çæ¡£æ¡åºä¸è¿å°åéçå°æ¹ãGCCæä»ä¹ä½ç¨ï¼Gccçåºæ¬ç¨æ³åé项
å¨ä½¿ç¨Gccç¼è¯å¨çæ¶åï¼æ们å¿
é¡»ç»åºä¸ç³»åå¿
è¦çè°ç¨åæ°åæ件å称ãGccç¼è¯å¨çè°ç¨åæ°å¤§çº¦æ100å¤ä¸ªï¼å
¶ä¸å¤æ°åæ°æ们å¯è½æ ¹æ¬å°±ç¨ä¸å°ï¼è¿éåªä»ç»å
¶ä¸æåºæ¬ãæ常ç¨çåæ°ã
Gccæåºæ¬çç¨æ³æ¯â¶gcc [options] [filenames]
å
¶ä¸optionså°±æ¯ç¼è¯å¨æéè¦çåæ°ï¼filenamesç»åºç¸å
³çæ件å称ã
-cï¼åªç¼è¯ï¼ä¸è¿æ¥æ为å¯æ§è¡æ件ï¼ç¼è¯å¨åªæ¯ç±è¾å
¥ç.cçæºä»£ç æ件çæ.o为åç¼çç®æ æ件ï¼é常ç¨äºç¼è¯ä¸å
å«ä¸»ç¨åºçåç¨åºæ件ã
-o output_filenameï¼ç¡®å®è¾åºæ件çå称为output_filenameï¼åæ¶è¿ä¸ªå称ä¸è½åæºæ件ååãå¦æä¸ç»åºè¿ä¸ªé项ï¼gccå°±ç»åºé¢è®¾çå¯æ§è¡æ件a.outã
-gï¼äº§ç符å·è°è¯å·¥å
·(GNUçgdb)æå¿
è¦ç符å·èµè®¯ï¼è¦æ³å¯¹æºä»£ç è¿è¡è°è¯ï¼æ们就å¿
é¡»å å
¥è¿ä¸ªé项ã
-Oï¼å¯¹ç¨åºè¿è¡ä¼åç¼è¯ãè¿æ¥ï¼éç¨è¿ä¸ªé项ï¼æ´ä¸ªæºä»£ç ä¼å¨ç¼è¯ãè¿æ¥è¿ç¨ä¸è¿è¡ä¼åå¤çï¼è¿æ ·äº§ççå¯æ§è¡æ件çæ§è¡æçå¯ä»¥æé«ï¼ä½æ¯ï¼ç¼è¯ãè¿æ¥çé度就ç¸åºå°è¦æ
¢ä¸äºã
-O2ï¼æ¯-Oæ´å¥½çä¼åç¼è¯ãè¿æ¥ï¼å½ç¶æ´ä¸ªç¼è¯ãè¿æ¥è¿ç¨ä¼æ´æ
¢ã
-Idirnameï¼å°dirnameææåºçç®å½å å
¥å°ç¨åºå¤´æ件ç®å½å表ä¸ï¼æ¯å¨é¢ç¼è¯è¿ç¨ä¸ä½¿ç¨çåæ°ãCç¨åºä¸ç头æ件å
å«ä¸¤ç§æ
åµâ¶
A)#include
B)#include âmyinc.hâ
å
¶ä¸ï¼A类使ç¨å°æ¬å·(< >)ï¼B类使ç¨åå¼å·(â â)ã对äºAç±»ï¼é¢å¤çç¨åºcppå¨ç³»ç»é¢è®¾å
å«æ件ç®å½(å¦/usr/include)ä¸æ寻ç¸åºçæ件
温馨提示:答案为网友推荐,仅供参考