程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> LinuxϱàÒëC³ÌÐòµÄ¹ý³Ì

LinuxϱàÒëC³ÌÐòµÄ¹ý³Ì

編輯:關於C++

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Îļþ¾ÍÊÇ×îÖÕϵͳ¿ÉÒÔÖ´ÐеÄÎļþ¡£

¶ÔÓÚ³ÌÐòµÄ±àÒ룬ÎÒÃÇÒ»°ã°ÑËüÈÏΪ¡°±àÒ롱ºÍ¡°Á´½Ó¡±Á½²¿·ÖÒ²×ã¹»ÁË£¬ÕâÀïµÄ±àÒëÒѾ­°üÀ¨ÁËÔ¤´¦Àí£¬±àÒë³É»ã±àÓïÑԺͱàÒë³ÉÄ¿±êÎļþÈý¸ö²½ÖèÁË¡£Ö»ÒªÍ·ÎļþÍêÕû£¬Óï·¨ÎÞÎ󣬱àÒëÒ»°ã¶¼ÄÜͨ¹ý¡£Ö»ÒªÓÐÍêÕûµÄÄ¿±êÎļþºÍ¹¦ÄÜ¿âÎļþ£¬Á´½ÓÒ²¿ÉÒԳɹ¦¡£Ö»Òª±àÒëͨ¹ýÁË£¬Á´½ÓҲͨ¹ýÁË£¬Õû¸öÏîÄ¿µÄ±àÒë¾ÍËãÍê³ÉÁË¡£

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved