LinuxϱàÒëC³ÌÐòµÄ¹ý³Ì。本站提示廣大學習愛好者:(LinuxϱàÒëC³ÌÐòµÄ¹ý³Ì)文章只能為提供參考,不一定能成為您想要的結果。以下是LinuxϱàÒëC³ÌÐòµÄ¹ý³Ì正文
ѧϰһÃÅÓïÑÔ³ÌÐò£¬±¾È˾õµÃ»¹ÊǵÃѧϰËüµÄ±àÒë¹æÔò£¬ÏÖÔÚ£¬Í¨¹ýСÀý×ÓС½áÏÂ×Ô¼º¶ÔC±àÒëµÄÈÏʶ¡£
/*test.c Á˽âC³ÌÐòµÄ±àÒë*/ #include <stdio.h> int main(void) { printf("Hello World!\n"); return 0; }
¶ÔÓÚtest.c£¬ÎÒÃdz£ÓÃÒ»²½±àÒ뵽λµÄÃüÁîÊÇ£º
gcc -o test test.c »òÕß gcc test.c -o test
ʵ¼ÊÉÏ£¬ÉÏÃæµÄÕâ¸ö±àÒëÃüÁî°üº¬ÁËËĸö½×¶ÎµÄ´¦Àí£¬¼´Ô¤´¦Àí(Ò²³ÆÔ¤±àÒ룬Preprocessing)¡¢±àÒë(Compilation)¡¢»ã±à (Assembly)ºÍÁ¬½Ó(Linking)¡£
ÕâÀïÏêϸÁоÙÍêÕûµÄ±àÒë¹ý³Ì
Ô¤´¦Àí£º
×÷Ó㺡¡¡¡Ô¤´¦ÀíµÄ×÷ÓÃÖ÷ÒªÊǶÁÈëÔ´´úÂ룬¼ì²é°üº¬Ô¤´¦ÀíÖ¸ÁîµÄÓï¾äºÍºê¶¨Ò壬²¢¶ÔÔ´´úÂë½øÐÐÏìÓ¦µÄת»»¡£Ô¤´¦Àí¹ý³Ì»¹»áɾ³ý³ÌÐòÖеÄ×¢ÊͺͶàÓàµÄ¿Õ°××Ö·û¡£
¶ÔÏ󣺡¡¡¡Ô¤´¦ÀíÖ¸ÁîÊÇÒÔ¡°#¡±¿ªÍ·µÄ£¬Ô¤´¦ÀíµÄ´¦Àí¶ÔÏóÖ÷Òª°üÀ¨ÒÔÏ·½Ã棺
¡¡¡¡£¨1£©#define¡¡¡¡ºê¶¨Òå
¡¡¡¡£¨2£©#ÔËËã·û #ÔËËã·û×÷ÓÃÊǰѸúÔÚÆäºóµÄ²ÎÊýת»»³ÉÒ»¸ö×Ö·û´®¡£¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡/***Àý***/ ¡¡¡¡¡¡¡¡¡¡¡¡#define PASTE(n) "adhfkj"#n ¡¡¡¡¡¡¡¡¡¡¡¡int main() ¡¡¡¡¡¡¡¡¡¡¡¡{ ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡printf("%s\n",PASTE(15)); ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡return 0; ¡¡¡¡¡¡¡¡¡¡¡¡} ¡¡¡¡¡¡¡¡¡¡¡¡/********Êä³öadhfj15*********/
¡¡¡¡£¨3£©##ÔËËã·û¡¡¡¡##ÔËËã·ûµÄ×÷ÓÃÓÃÓڰѲÎÊýÁ¬½Óµ½Ò»Æ𡣡¡
¡¡¡¡¡¡¡¡/*****Àý*****/ ¡¡¡¡¡¡¡¡#define NUM(a,b,c) a##b##c ¡¡¡¡¡¡¡¡#define STR(a,b,c) a##b##c ¡¡¡¡¡¡¡¡int main() ¡¡¡¡¡¡¡¡{ ¡¡¡¡¡¡¡¡¡¡¡¡printf("%d\n",NUM(1,2,3)); ¡¡¡¡¡¡¡¡¡¡¡¡printf("%s\n",STR("aa","bb","cc")); ¡¡¡¡¡¡¡¡¡¡¡¡return 0; ¡¡¡¡¡¡¡¡} ¡¡¡¡/*********×îºó³ÌÐòµÄÊä³öΪ:aabbcc**********/
¡¡¡¡£¨4£©Ìõ¼þ±àÒëÖ¸Áî
¡¡¡¡£¨5£©Í·Îļþ°üº¬Ö¸Áî
¡¡¡¡£¨6£©ÌØÊâ·ûºÅ
__FILE__°üº¬µ±Ç°³ÌÐòÎļþÃûµÄ×Ö·û´®
__LINE__±íʾµ±Ç°ÐкŵÄÕûÊý
__DATE__°üº¬µ±Ç°ÈÕÆÚµÄ×Ö·û´®
__TIME__°üº¬µ±Ç°µÄ×Ö·û´®
ÈçÉÏÃæµÄtest.cÎļþµÄÔ¤´¦ÀíÖ¸ÁîÊÇ
gcc -E test.c -o test.i
±àÒë-±àÒë³É»ã±àÓïÑÔ
gcc -S test.i -o test.s
ÕâÊÇÉÏÃæ´úÂë±àÒë³öÀ´test.sµÄÄÚÈÝ
.file "test.c" .section .rodata .LC0: .string "hello world" .text .globl main .type main, @function main: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl $.LC0, %edi call puts movl $0, %eax leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-4)" .section .note.GNU-stack,"",@progbits
»ã±à
×÷Ó㺽«ÉÏÃæµÄ»ã±àÖ¸Áî±àÒëÉú³ÉÄ¿±êÎļþ
gcc -c test.s -o test.o
ÕâÊÇÉÏÃæµÄtest.oÎļþµÄÄÚÈÝ
ELF > 8 @ @ UH‰å? ? ? Éà hello world GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-4) zR x ? A?C P .symtab .strtab .shstrtab .rela.text .data .bss .rodata .comment .note.GNU-stack .rela.eh_frame @ ? 0 & X , X 1 X 9 0 d - B ? W ? 8 R ? ? a x € ? test.c main puts ?ÿÿÿÿÿÿ
Á´½Ó
Á´½ÓµÄÖ÷ҪĿµÄÊǽ«³ÌÐòµÄÄ¿±êÎļþÓëËùÐèÒª¸½¼ÓµÄÄ¿±êÎļþÁ´½ÓÆðÀ´£¬×îÖÕÉú³É¿ÉÖ´ÐÐÎļþ¡£¸½¼ÓµÄÄ¿±êÎļþÒ²°üÀ¨ÁËËùÐèÒªµÄ¿âÎļþ£¨¾²Ì¬Á´½Ó¿âºÍ¶¯Ì¬Á´½Ó¿â£©
gcc test.o -o test
×îÖÕÉú³ÉµÄtestÎļþ¾ÍÊÇ×îÖÕϵͳ¿ÉÒÔÖ´ÐеÄÎļþ¡£
¶ÔÓÚ³ÌÐòµÄ±àÒ룬ÎÒÃÇÒ»°ã°ÑËüÈÏΪ¡°±àÒ롱ºÍ¡°Á´½Ó¡±Á½²¿·ÖÒ²×ã¹»ÁË£¬ÕâÀïµÄ±àÒëÒѾ°üÀ¨ÁËÔ¤´¦Àí£¬±àÒë³É»ã±àÓïÑԺͱàÒë³ÉÄ¿±êÎļþÈý¸ö²½ÖèÁË¡£Ö»ÒªÍ·ÎļþÍêÕû£¬Óï·¨ÎÞÎ󣬱àÒëÒ»°ã¶¼ÄÜͨ¹ý¡£Ö»ÒªÓÐÍêÕûµÄÄ¿±êÎļþºÍ¹¦ÄÜ¿âÎļþ£¬Á´½ÓÒ²¿ÉÒԳɹ¦¡£Ö»Òª±àÒëͨ¹ýÁË£¬Á´½ÓҲͨ¹ýÁË£¬Õû¸öÏîÄ¿µÄ±àÒë¾ÍËãÍê³ÉÁË¡£