GCC ±àÒëc³ÌÐòµÄ·½·¨¼°¹ý³Ì½âÎö
GCC ±àÒëc³ÌÐòµÄ·½·¨¼°¹ý³Ì½âÎö
Justin.zp.Yang 2010.04.10
Ŀǰ Linux ÏÂ×î³£ÓÃµÄ C ÓïÑÔ±àÒëÆ÷ÊÇ GCC £¨ GNU Compiler Collection £©£¬ËüÊÇ GNU ÏîÄ¿ÖзûºÏ ANSI C ±ê×¼µÄ±àÒëϵͳ£¬Äܹ»±àÒëÓà C ¡¢ C++ ºÍ Object C µÈÓïÑÔ±àдµÄ³ÌÐò¡£ GCC ²»½ö¹¦Äܷdz£Ç¿´ó£¬½á¹¹Ò²Òì³£Áé»î¡£×îÖµµÃ³ÆµÀµÄÒ»µã¾ÍÊÇËü¿ÉÒÔͨ¹ý²»Í¬µÄǰ¶ËÄ£¿éÀ´Ö§³Ö¸÷ÖÖÓïÑÔ£¬ÈçJava ¡¢ Fortran ¡¢ Pascal ¡¢ Modula-3 ºÍ Ada µÈ¡£¿ª·Å¡¢×ÔÓɺÍÁé»îÊÇ Linux µÄ÷ÈÁ¦ËùÔÚ£¬¶øÕâÒ»µãÔÚ GCC ÉϵÄÌåÏÖ¾ÍÊdzÌÐòԱͨ¹ýËüÄܹ»¸üºÃµØ¿ØÖÆÕû¸ö±àÒë¹ý³Ì¡£ÔÚʹÓà GCC ±àÒë³ÌÐòʱ£¬±àÒë¹ý³Ì¿ÉÒÔ±»Ï¸·ÖΪËĸö½×¶Î£º
Ô¤´¦Àí£¨ Pre-Processing £©
±àÒ루 Compiling £©
»ã±à£¨ Asse mbling £©
Á´½Ó£¨ Linking £©
Linux ³ÌÐòÔ±¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèÒªÈà GCC ÔÚ±àÒëµÄÈκν׶νáÊø£¬ÒÔ±ã¼ì²é»òʹÓñàÒëÆ÷Ôڸý׶εÄÊä³öÐÅÏ¢£¬»òÕß¶Ô×îºóÉú³ÉµÄ¶þ½øÖÆÎļþ½øÐпØÖÆ£¬ÒÔ±ãͨ¹ý¼ÓÈ벻ͬÊýÁ¿ºÍÖÖÀàµÄµ÷ÊÔ´úÂëÀ´Îª½ñºóµÄµ÷ÊÔ×öºÃ×¼±¸¡£ºÍÆäËü³£ÓõıàÒëÆ÷Ò»Ñù£¬ GCC Ò²ÌṩÁËÁé»î¶øÇ¿´óµÄ´úÂëÓÅ»¯¹¦ÄÜ£¬ÀûÓÃËü¿ÉÒÔÉú³ÉÖ´ÐÐЧÂʸü¸ßµÄ´úÂë¡£
GCC ÌṩÁË 30 ¶àÌõ¾¯¸æÐÅÏ¢ºÍÈý¸ö¾¯¸æ¼¶±ð£¬Ê¹ÓÃËüÃÇÓÐÖúÓÚÔöÇ¿³ÌÐòµÄÎȶ¨ÐԺͿÉÒÆÖ²ÐÔ¡£´ËÍ⣬ GCC »¹¶Ô±ê×¼µÄ C ºÍ C++ ÓïÑÔ½øÐÐÁË´óÁ¿µÄÀ©Õ¹£¬Ìá¸ß³ÌÐòµÄÖ´ÐÐЧÂÊ£¬ÓÐÖúÓÚ±àÒëÆ÷½øÐдúÂëÓÅ»¯£¬Äܹ»¼õÇá±à³ÌµÄ¹¤×÷Á¿¡£
C ³ÌÐòµÄ±àÒë¹ý³ÌÖ÷Òª·ÖΪËĸö½×¶Î£ºpre-processing,compiling,assembling,linking;
³£ÓÃÎļþµÄºó׺Ãû£º
gcc Ô¤´¦Àí½×¶Î£ºÖ÷Òª¶Ô°üº¬µÄÍ·Îļþ£¨££include £©ºÍºê¶¨Ò壨££define,#ifdef ... £©½øÐд¦Àí¡£¿ÉÒÔʹÓÓgcc -E” ÈÃgcc ÔÚÔ¤´¦ÀíÖ®ºóÍ£Ö¹±àÒë¹ý³Ì£¬Éú³É *.i Îļþ¡£
[root@localhost gcc]# gcc -E hello.c -o hello.i
gcc ±àÒë½×¶Î£ºgcc Ê×ÏÈÒª¼ì²é´úÂëµÄ¹æ·¶ÐÔ£¬ÊÇ·ñÓÐÓï·¨´íÎóµÈ¡£ÒÔÈ·¶¨´úÂëʵ¼ÊÒª×öµÄ¹¤×÷£¬ÔÚ¼ì²éÎÞÎóºó£¬gcc °Ñ´úÂë·Òë³É»ã±àÓïÑÔ¡£Óû§¿ÉÒÔʹÓÃ-S Ñ¡Ïî½øÐв鿴£¬¸ÃÑ¡ÏîÖ»½ø
ÐбàÒë¶ø²»½øÐлã±à£¬Éú³É»ã±à´úÂë¡£
[root@localhost gcc]# gcc -S hello.i -o hello.s
gcc »ã±à½×¶Î£ºÉú³ÉÄ¿±ê´úÂë *.o £»ÓÐÁ½ÖÖ·½Ê½£ºÊ¹Óà gcc Ö±½Ó´ÓÔ´´úÂëÉú³ÉÄ¿±ê´úÂë gcc -c *.s -o *.o ÒÔ¼°Ê¹Óûã±àÆ÷´Ó»ã±à´úÂëÉú³ÉÄ¿±ê´úÂë as *.s -o *.o
[root@localhost gcc]# gcc -c hello.s -o hello.o
[root@localhost
Ïà¹ØÎĵµ£º
±àÒë³ÌÐò£¬ÌáʾCÅ̿ռ䲻×㣬ÎÒÇåÀícÅ̺ó£¬É¾³ýûÓõÄÈí¼þºó£¬·¢Ïֿռ仹ÊǺÜÉÙ£¬½ö½öÌáÉý200M×óÓÒ£¬ºÜÊÇÆæ¹Ö£¬Îҵÿռ䶼±»Ê²Ã´Õ¼È¥ÁËÄØ£¿
¾¹ý²é¿´£¬·¢ÏÖC:\Documents and Settings\tangh\Application Data\VisualAssistĿ¼¾¹È»ÓÐ5G¶à£¬ÎÒµÄÂèѽ£¬ÉÏÍøÒ»²é£¬ÍøÉÏ˵Ëû˵CÅÌɱÊÖ£¬¸É´àÕ¤ÁË£¬Ã»ÓÐʲôӰÏ죡
......
GCC°²×°³É¹¦,ËùÐèÎļþÓÐ:
libf2c-3.3.2-1.i386.rpm
libstdc++-devel-3.3.2-1.i386.rpm
glibc-kernheaders-2.4-8.36.i386.rpm
glibc-headers-2.3.2-101.i386.rpm
glibc-devel-2.3.2-101.i386.rpm
gcc-objc-3.3.2-1.i386.rpm
binutils-2.14.90.0.6-3.i386.rpm
gcc-3.3.2-1.i386.rpm
gcc-c++-3.3.2-1.i386.rpm
autom ......
ÄÚºËÆô¶¯µÄÏÖÔÚÒѾÊÇ¿ªÊ¼Ö´Ðк¯Êýstart_kernelº¯ÊýÁË¡£start_kernelº¯ÊýÔÚinit/main.cÖж¨Òå¡£start_kernelº¯ÊýÖ»ÊÇÍê³É
ÏàÓ¦µÄ½á¹¹µÄ³õʼ»¯ÈÎÎñ¡£
printk(KERN_NOTICE);
printk(linux_banner);
setup_arch(&command_line);
ÔÚubootµÄÒ»Ö±¹ý³ÌÖУ¬uboo ......
Ò» £¬ÔõÑùѧϰCÓïÑÔ
ºÜ¶àÈ˶ÔѧϰCÓïÑԸе½ÎÞ´ÓÏÂÊÖ£¬¾³£ÎÊÎÒͬһ¸öÎÊÌ⣺¾¿¾¹ÔõÑùѧϰCÓïÑÔ£¿ÎÒÊÇÒ»¸ö½Ìʦ£¬ÒѾ¿ª·¢Á˺ܶàÄêµÄ³ÌÐò£¬ºÍºÜ¶à¸Õ¸ÕÆð²½µÄÈËÒ»Ñù£¬Ñ§Ï°µÄµÚÒ»¸ö¼ÆËã»úÓïÑÔ¾ÍÊÇCÓïÑÔ¡£¾¹ýÕâЩÄêµÄ¿ª·¢£¬ÎÒÉîÉîµÄÌå»áµ½CÓïÑÔ¶ÔÓÚÒ»¸ö³ÌÐòÉè¼ÆÈËÔ±¶àôµÄÖØÒª£¬Èç¹û²»¶®CÓ ......
1.
printf("%.9lf\n",sum);
//Êä³öСÊýµãºó9λ²»Ê¡È¥Ä©Î²¶àÓàµÄ0
2.
printf("%.10g\n",sum);
//Êä³öСÊýµãºó9λ²»Ê¡È¥Ä©Î²¶àÓàµÄ0
3.
#include<iomanip>
cout<<setprecision(10)<<sum<<endl;
//Êä³öСÊýµãºó9λʡȥĩβ¶àÓàµÄ0
4.
#include<iomanip>
cout.pre ......