|
![]() |
|
![]() by Lorne Bailey <sherm_pbody(at)yahoo.com> ¹ØÓÚ×÷Õß: LorneסÔÚÖ¥¼Ó¸ç£¬ËûÊÇÒ»¸ö¼ÆËã»ú×ÉѯÈË£¬ËûµÄÌØ³¤ÊǰÑÊý¾Ýµ¼Èëµ¼³öOracleÊý¾Ý¿â¡£ ×Ô´ÓתÏò³ÌÐòÉè¼ÆÁìÓòºó£¬ËûһֱʹÓÃ*nix»·¾³£¬LorneÍêÈ«±Ü¿ªÁË¡°DLLµØÓü¡±¡£ ËûÕýÔÚ¹¥¶Á¼ÆËã»ú¿ÆÑ§Ë¶Ê¿Ñ§Î»¡£ Ŀ¼: |
ÕªÒª:
ÒªÏë¶Á¶®±¾ÎÄ£¬ÄãÐèÒª¶ÔCÓïÑÔÓлù±¾µÄÁ˽⣬±¾ÎĽ«½éÉÜÈçºÎʹÓÃgcc±àÒëÆ÷¡£
Ê×ÏÈ£¬ÎÒÃǽéÉÜÈçºÎÔÚÃüÁîÐз½Ê½ÏÂʹÓñàÒëÆ÷±àÒë¼òµ¥µÄCÔ´´úÂë¡£
È»ºó£¬ÎÒÃǼòÒª½éÉÜһϱàÒëÆ÷¾¿¾¹×÷ÁËÄÇЩ¹¤×÷£¬ÒÔ¼°ÈçºÎ¿ØÖƱàÒë¹ý³Ì¡£
ÎÒÃÇÒ²¼òÒª½éÉÜÁ˵÷ÊÔÆ÷µÄʹÓ÷½·¨¡£
![]() |
ÄãÄÜÏëÏóʹÓ÷â±ÕÔ´´úÂëµÄ˽ÓбàÒëÆ÷±àÒë×ÔÓÉÈí¼þÂð£¿ÄãÔõô֪µÀ±àÒëÆ÷ÔÚÄãµÄ
¿ÉÖ´ÐÐÎļþÖмÓÈëÁËʲô£¿¿ÉÄÜ»á¼ÓÈë¸÷ÖÖºóÃźÍľÂí¡£Ken ThompsonÊÇÒ»¸öÖøÃû
µÄºÚ¿Í£¬Ëû±àдÁËÒ»¸ö±àÒëÆ÷£¬µ±±àÒëÆ÷±àÒë×Ô¼ºÊ±£¬¾ÍÔÚ'login'³ÌÐòÖÐÁôϺóÃÅ
ºÍÓÀ¾ÃµÄľÂí¡£Çëµ½ ÕâÀï ÔĶÁËû¶Ô
Õâ¸ö½Ü×÷µÄÃèÊö¡£ÐÒÔ˵ÄÊÇ£¬ÎÒÃÇÓÐÁËgcc¡£µ±Äã½øÐÐ configure; make; make install
ʱ£¬
gccÔÚÄ»ºó×öÁËºÜ¶à·±ÖØµÄ¹¤×÷¡£ÈçºÎ²ÅÄÜÈÃgccΪÎÒÃǹ¤×÷ÄØ£¿ÎÒÃǽ«¿ªÊ¼±àдһ¸öֽůÓÎÏ·£¬
²»¹ýÎÒÃÇÖ»ÊÇΪÁËÑÝʾ±àÒëÆ÷µÄ¹¦ÄÜ£¬ËùÒÔ¾¡¿ÉÄܵؾ«¼òÁË´úÂë¡£
ÎÒÃǽ«´ÓÍ·¿ªÊ¼Ò»²½Ò»²½µØ×ö£¬ÒÔ±ãÀí½â±àÒë¹ý³Ì£¬Á˽âΪÁËÖÆ×÷¿ÉÖ´ÐÐÎļþÐèÒª
×öЩʲô£¬°´Ê²Ã´Ë³Ðò×ö¡£ÎÒÃǽ«¿´¿´ÈçºÎ±àÒëC³ÌÐò£¬ÒÔ¼°ÈçºÎʹÓñàÒëÑ¡Ïî
ÈÃgcc°´ÕÕÎÒÃǵÄÒªÇó¹¤×÷¡£²½Ö裨ÒÔ¼°ËùÓù¤¾ß£©ÈçÏ£º Ô¤±àÒë (gcc -E)£¬
±àÒë (gcc)£¬ »ã±à (as)£¬ºÍ Á¬½Ó (ld)¡£
Ê×ÏÈ£¬ÎÒÃÇÓ¦¸ÃÖªµÀÈçºÎµ÷ÓñàÒëÆ÷¡£Êµ¼ÊÉÏ£¬ÕâºÜ¼òµ¥¡£ÎÒÃǽ«´ÓÄǸöÖøÃûµÄµÚÒ»¸öC³ÌÐò¿ªÊ¼¡£ £¨¸÷λÀÏǰ±²£¬ÇëÔÁÂÎÒ£©¡£
#include <stdio.h> int main()
{ printf("Hello World!\n"); }
°ÑÕâ¸öÎļþ±£´æÎª game.c
¡£ Äã¿ÉÒÔÔÚÃüÁîÐÐϱàÒëËü£º
gcc game.cÔÚĬÈÏÇé¿öÏ£¬C±àÒëÆ÷½«Éú³ÉÒ»¸öÃûΪ
a.out
µÄ¿ÉÖ´ÐÐÎļþ¡£
Äã¿ÉÒÔ¼üÈëÈçÏÂÃüÁîÔËÐÐËü£º
a.out Hello Worldÿһ´Î±àÒë³ÌÐòʱ£¬ÐµÄ
a.out
½«¸²¸ÇÔÀ´µÄ³ÌÐò¡£ÄãÎÞ·¨ÖªµÀÊÇÄĸö
³ÌÐò´´½¨ÁË a.out
¡£ÎÒÃÇ¿ÉÒÔͨ¹ýʹÓà -o
±àÒëÑ¡Ï¸æËß
gccÎÒÃÇÏë°Ñ¿ÉÖ´ÐÐÎļþ½ÐʲôÃû×Ö¡£ÎÒÃǽ«°ÑÕâ¸ö³ÌÐò½Ð×ö game
£¬ÎÒÃÇ
¿ÉÒÔʹÓÃÈκÎÃû×Ö£¬ÒòΪCûÓÐJavaÄÇÑùµÄÃüÃûÏÞÖÆ¡£
gcc -o game game.c
game Hello World
µ½ÏÖÔÚΪֹ£¬ÎÒÃÇÀëÒ»¸öÓÐÓõijÌÐò»¹²îµÃºÜÔ¶¡£Èç¹ûÄã¾õµÃ¾ÚÉ¥£¬Äã¿ÉÒÔÏëÒ»ÏëÎÒÃÇ ÒѾ±àÒë²¢ÔËÐÐÁËÒ»¸ö³ÌÐò¡£ÒòΪÎÒÃǽ«Ò»µãÒ»µãΪÕâ¸ö³ÌÐòÌí¼Ó¹¦ÄÜ£¬ËùÒÔÎÒÃDZØÐë ±£Ö¤ÈÃËüÄܹ»ÔËÐС£Ëƺõÿ¸ö¸Õ¿ªÊ¼Ñ§±à³ÌµÄ³ÌÐòÔ±¶¼ÏëÒ»ÏÂ×Ó±àÒ»¸ö1000ÐеijÌÐò£¬ È»ºóÒ»´ÎÐÞ¸ÄËùÓеĴíÎó¡£Ã»ÓÐÈË£¬ÎÒÊÇ˵ûÓÐÈË£¬ÄÜ×öµ½Õâ¸ö¡£ÄãÓ¦¸ÃÏȱàÒ»¸ö¿ÉÒÔ ÔËÐеÄС³ÌÐò£¬ÐÞ¸ÄËü£¬È»ºóÔÙ´ÎÈÃËüÔËÐС£Õâ¿ÉÒÔÏÞÖÆÄãÒ»´ÎÐ޸ĵĴíÎóÊýÁ¿¡£ÁíÍ⣬ ÄãÖªµÀ¸Õ²Å×öÁËÄÄЩÐÞ¸Äʹ³ÌÐòÎÞ·¨ÔËÐУ¬Òò´ËÄãÖªµÀÓ¦¸Ã°Ñ×¢ÒâÁ¦·ÅÔÚÄÄÀï¡£Õâ¿ÉÒÔ ·ÀÖ¹ÕâÑùµÄÇé¿ö³öÏÖ£ºÄãÈÏΪÄã±àдµÄ¶«Î÷Ó¦¸ÃÄܹ»¹¤×÷£¬ËüÒ²ÄÜͨ¹ý±àÒ룬µ«Ëü¾ÍÊÇ ²»ÄÜÔËÐС£ÇëÇмǣ¬Äܹ»Í¨¹ý±àÒëµÄ³ÌÐò²¢²»Òâζ×ÅËüÊÇÕýÈ·µÄ¡£
ÏÂÒ»²½ÎªÎÒÃǵÄÓÎÏ·±àдһ¸öÍ·Îļþ¡£Í·Îļþ°ÑÊý¾ÝÀàÐͺͺ¯ÊýÉùÃ÷¼¯Öе½ÁËÒ»´¦¡£ Õâ¿ÉÒÔ±£Ö¤Êý¾Ý½á¹¹¶¨ÒåµÄÒ»ÖÂÐÔ£¬ÒÔ±ã³ÌÐòµÄÿһ²¿·Ö¶¼ÄÜÒÔͬÑùµÄ·½Ê½¿´´ýÒ»ÇÐÊÂÇé¡£
#ifndef DECK_H #define DECK_H #define DECKSIZE 52 typedef struct deck_t { int card[DECKSIZE]; /* number of cards used */ int dealt; }deck_t; #endif /* DECK_H */
°ÑÕâ¸öÎļþ±£´æÎª deck.h
¡£Ö»ÄܱàÒë .c
Îļþ£¬
ËùÒÔÎÒÃDZØÐëÐÞ¸Ä game.c¡£ÔÚgame.cµÄµÚ2ÐУ¬Ð´ÉÏ #include "deck.h"
¡£
ÔÚµÚ5ÐÐдÉÏ deck_t deck;
¡£ÎªÁ˱£Ö¤ÎÒÃÇûÓиã´í£¬°ÑËüÖØÐ±àÒëÒ»´Î¡£
gcc -o game game.c
Èç¹ûûÓдíÎ󣬾ÍûÓÐÎÊÌâ¡£Èç¹û±àÒë²»ÄÜͨ¹ý£¬ÄÇô¾ÍÐÞ¸ÄËüÖ±µ½ÄÜͨ¹ýΪֹ¡£
±àÒëÆ÷ÊÇÔõô֪µÀ deck_t
ÀàÐÍÊÇʲôµÄÄØ£¿ÒòΪÔÚÔ¤±àÒëÆÚ¼ä£¬
Ëüʵ¼ÊÉϰÑ"deck.h"Îļþ¸´ÖƵ½ÁË"game.c"ÎļþÖС£Ô´´úÂëÖеÄÔ¤±àÒëָʾÒÔ"#"Ϊǰ׺¡£
Äã¿ÉÒÔͨ¹ýÔÚgccºó¼ÓÉÏ -E
Ñ¡ÏîÀ´µ÷ÓÃÔ¤±àÒëÆ÷¡£
gcc -E -o game_precompile.txt game.c wc -l game_precompile.txt 3199 game_precompile.txt¼¸ºõÓÐ3200ÐеÄÊä³ö£¡ÆäÖдó¶àÊýÀ´×Ô
stdio.h
°üº¬Îļþ£¬µ«ÊÇÈç¹û
Äã²é¿´Õâ¸öÎļþµÄ»°£¬ÎÒÃǵÄÉùÃ÷Ò²ÔÚÄÇÀï¡£Èç¹ûÄã²»Óà -o
Ñ¡ÏîÖ¸¶¨
Êä³öÎļþÃûµÄ»°£¬Ëü¾ÍÊä³öµ½¿ØÖÆÌ¨¡£Ô¤±àÒë¹ý³Ìͨ¹ýÍê³ÉÈý¸öÖ÷ÒªÈÎÎñ¸øÁË´úÂëºÜ´óµÄ
Áé»îÐÔ¡£
-E
Ñ¡Ï¶øÊÇÈÃËü
°ÑÊä³ö´«Ë͸ø±àÒëÆ÷¡£
×÷Ϊһ¸öÖм䲽Ö裬gcc°ÑÄãµÄ´úÂë·Òë³É»ã±àÓïÑÔ¡£ËüÒ»¶¨ÒªÕâÑù×ö£¬Ëü±ØÐëͨ¹ý·ÖÎö ÄãµÄ´úÂë¸ãÇå³þÄ㾿¾¹ÏëÒª×öʲô¡£Èç¹ûÄã·¸ÁËÓï·¨´íÎó£¬Ëü¾Í»á¸æËßÄ㣬ÕâÑù±àÒë¾Íʧ°ÜÁË¡£ ÈËÃÇÓÐʱ»á°ÑÕâÒ»²½Îó½âΪÕû¸ö¹ý³Ì¡£µ«ÊÇ£¬Êµ¼ÊÉÏ»¹ÓÐÐí¶à¹¤×÷ÒªgccÈ¥×öÄØ¡£
as
°Ñ»ã±àÓïÑÔ´úÂëת»»ÎªÄ¿±ê´úÂë¡£ÊÂʵÉÏÄ¿±ê´úÂë²¢²»ÄÜÔÚCPUÉÏÔËÐУ¬
µ«ËüÀëÍê³ÉÒѾºÜ½üÁË¡£±àÒëÆ÷Ñ¡Ïî -c
°Ñ .c Îļþת»»ÎªÒÔ .o ΪÀ©Õ¹Ãû
µÄÄ¿±êÎļþ¡£
Èç¹ûÎÒÃÇÔËÐÐ
gcc -c game.cÎÒÃǾÍ×Ô¶¯´´½¨ÁËÒ»¸öÃûΪgame.oµÄÎļþ¡£ÕâÀïÎÒÃÇÅöµ½ÁËÒ»¸öÖØÒªµÄÎÊÌâ¡£ÎÒÃÇ¿ÉÒÔÓà ÈÎÒâÒ»¸ö .c Îļþ´´½¨Ò»¸öÄ¿±êÎļþ¡£ÕýÈçÎÒÃÇÔÚÏÂÃæËù¿´µ½µÄ£¬ÔÚÁ¬½Ó²½ÖèÖÐÎÒÃÇ¿ÉÒÔ °ÑÕâЩĿ±êÎļþ×éºÏ³É¿ÉÖ´ÐÐÎļþ¡£ÈÃÎÒÃǼÌÐø½éÉÜÎÒÃǵÄÀý×Ó¡£ÒòΪÎÒÃÇÕýÔÚ±àдһ¸ö ֽůÓÎÏ·£¬ÎÒÃÇÒѾ°ÑÒ»¸¶Åƶ¨ÒåΪ
deck_t
£¬ÎÒÃǽ«±àдһ¸öÏ´ÅÆº¯Êý¡£
Õâ¸öº¯Êý½ÓÊÜÒ»¸öÖ¸ÏòdeckÀàÐ͵ÄÖ¸Õ룬²¢°ÑÒ»¸¶Ëæ»úµÄůװÈëdeckÀàÐÍ¡£ËüʹÓÃ'drawn'
Êý×é¸ú×ټǼÄÇÐ©ÅÆÒѾÓùýÁË¡£Õâ¸ö¾ßÓÐDECKSIZE¸öÔªËØµÄÊý×é¿ÉÒÔ·ÀÖ¹ÎÒÃÇÖØ¸´Ê¹ÓÃ
Ò»ÕÅÅÆ¡£
#include <stdlib.h> #include <stdio.h> #include <time.h> #include "deck.h" static time_t seed = 0; void shuffle(deck_t *pdeck) { /* Keeps track of what numbers have been used */ int drawn[DECKSIZE] = {0}; int i; /* One time initialization of rand */ if(0 == seed) { seed = time(NULL); srand(seed); } for(i = 0; i < DECKSIZE; i++) { int value = -1; do { value = rand() % DECKSIZE; } while(drawn[value] != 0); /* mark value as used */ drawn[value] = 1; /* debug statement */ printf("%i\n", value); pdeck->card[i] = value; } pdeck->dealt = 0; return; }
°ÑÕâ¸öÎļþ±£´æÎª shuffle.c
¡£ÎÒÃÇÔÚÕâ¸ö´úÂëÖмÓÈëÁËÒ»Ìõµ÷ÊÔÓï¾ä£¬
ÒÔ±ãÔËÐÐʱ£¬ÄÜÊä³öËù²úÉúµÄÅÆºÅ¡£ÕⲢûÓÐΪÎÒÃǵijÌÐòÌí¼Ó¹¦ÄÜ£¬µ«ÊÇÏÖÔÚµ½ÁË
¹Ø¼üʱ¿Ì£¬ÎÒÃÇ¿´¿´¾¿¾¹·¢ÉúÁËʲô¡£ÒòΪÎÒÃǵÄÓÎÏ·»¹ÔÚ³õ¼¶½×¶Î£¬ÎÒÃÇûÓбðµÄ
°ì·¨È·¶¨ÎÒÃǵĺ¯ÊýÊÇ·ñʵÏÖÁËÎÒÃÇÒªÇóµÄ¹¦ÄÜ¡£Ê¹ÓÃÄÇÌõprintfÓï¾ä£¬ÎÒÃǾÍÄÜ׼ȷ
µØÖªµÀÏÖÔÚ¾¿¾¹·¢ÉúÁËʲô£¬ÒÔ±ãÔÚ¿ªÊ¼ÏÂÒ»½×¶Î֮ǰÎÒÃÇÖªµÀÅÆÒѾϴºÃÁË¡£ÔÚÎÒÃÇ
¶ÔËüµÄ¹¤×÷¸Ðµ½ÂúÒâÖ®ºó£¬ÎÒÃÇ¿ÉÒÔ°ÑÄÇÒ»ÐÐÓï¾ä´Ó´úÂëÖÐɾµô¡£ÕâÖÖµ÷ÊÔ³ÌÐòµÄ¼¼Êõ
¿´ÆðÀ´ºÜ´Ö²Ú£¬µ«ËüʹÓÃ×îÉÙµÄÓï¾äÍê³ÉÁ˵÷ÊÔÈÎÎñ¡£ÒÔºóÎÒÃÇÔÙ½éÉܸü¸´Ôӵĵ÷ÊÔÆ÷¡£
shuffle.c
ÖÐûÓÐ'main'º¯Êý£¬Òò´Ë²»ÄܱàÒëΪ¶ÀÁ¢µÄ¿ÉÖ´ÐÐÎļþ¡£
ÎÒÃDZØÐë°ÑËüÓëÁíÒ»¸ö¾ßÓÐ'main'º¯Êý²¢µ÷ÓÃ'shuffle'µÄ³ÌÐò×éºÏÆðÀ´¡£
ÔËÐÐÃüÁî
gcc -c shuffle.c²¢È·¶¨Ëü´´½¨ÁËÒ»¸öÃûΪ
shuffle.o
µÄÐÂÎļþ¡£±à¼game.cÎļþ£¬ÔÚµÚ7ÐУ¬ÔÚ
deck_tÀàÐ͵ıäÁ¿ deck
ÉùÃ÷Ö®ºó£¬¼ÓÉÏÏÂÃæÕâÒ»ÐУº
shuffle(&deck);ÏÖÔÚ£¬Èç¹ûÎÒÃÇ»¹ÏóÒÔǰһÑù´´½¨¿ÉÖ´ÐÐÎļþ£¬ÎÒÃǾͻáµÃµ½Ò»¸ö´íÎó
gcc -o game game.c /tmp/ccmiHnJX.o: In function `main': /tmp/ccmiHnJX.o(.text+0xf): undefined reference to `shuffle' collect2: ld returned 1 exit status±àÒë³É¹¦ÁË£¬ÒòΪÎÒÃǵÄÓï·¨ÊÇÕýÈ·µÄ¡£µ«ÊÇÁ¬½Ó²½Öèȴʧ°ÜÁË£¬ÒòΪ ÎÒÃÇûÓиæËß±àÒëÆ÷'shuffle'º¯ÊýÔÚÄÄÀï¡£ ÄÇô£¬µ½µ×ʲôÊÇÁ¬½Ó£¿ÎÒÃÇÔõÑù¸æËß±àÒëÆ÷µ½ÄÄÀïѰÕÒÕâ¸öº¯ÊýÄØ£¿
Á¬½ÓÆ÷ld
£¬Ê¹ÓÃÏÂÃæµÄÃüÁ½ÓÊÜÇ°ÃæÓÉ as
´´½¨µÄÄ¿±êÎļþ²¢°ÑËüת»»Îª¿ÉÖ´ÐÐÎļþ
gcc -o game game.o shuffle.oÕ⽫°ÑÁ½¸öÄ¿±êÎļþ×éºÏÆðÀ´²¢´´½¨¿ÉÖ´ÐÐÎļþ
game
¡£
Á¬½ÓÆ÷´Óshuffle.oÄ¿±êÎļþÖÐÕÒµ½ shuffle
º¯Êý£¬²¢°ÑËü°üÀ¨½ø¿ÉÖ´ÐÐÎļþ¡£
Ä¿±êÎļþµÄÕæÕýºÃ´¦ÔÚÓÚ£¬Èç¹ûÎÒÃÇÏëÔÙ´ÎʹÓÃÄǸöº¯Êý£¬ÎÒÃÇËùÒª×öµÄ¾ÍÊǰüº¬"deck.h"
Îļþ²¢°Ñ shuffle.o
Ä¿±êÎļþÁ¬½Óµ½ÐµĿÉÖ´ÐÐÎļþÖС£
ÏóÕâÑùµÄ´úÂëÖØÓÃÊǾ³£·¢ÉúµÄ¡£ËäÈ»ÎÒÃDz¢Ã»ÓбàÐ´Ç°Ãæ×÷Ϊµ÷ÊÔÓï¾äµ÷ÓÃµÄ printf
º¯Êý£¬Á¬½ÓÆ÷È´ÄÜ´ÓÎÒÃÇÓà #include <stdlib.h>
Óï¾ä°üº¬µÄÎļþÖÐ
ÕÒµ½ËüµÄÉùÃ÷£¬²¢°Ñ´æ´¢ÔÚC¿â£¨/lib/libc.so.6£©ÖеÄÄ¿±ê´úÂëÁ¬½Ó½øÀ´¡£
ÕâÖÖ·½Ê½Ê¹ÎÒÃÇ¿ÉÒÔʹÓÃÒÑÄÜÕýÈ·¹¤×÷µÄÆäËûÈ˵ĺ¯Êý£¬Ö»¹ØÐÄÎÒÃÇËùÒª½â¾öµÄÎÊÌâ¡£
Õâ¾ÍÊÇΪʲôͷÎļþÖÐÒ»°ãÖ»º¬ÓÐÊý¾ÝºÍº¯ÊýÉùÃ÷£¬¶øÃ»Óк¯ÊýÌå¡£Ò»°ã£¬Äã¿ÉÒÔΪ
Á¬½ÓÆ÷´´½¨Ä¿±êÎļþ»òº¯Êý¿â£¬ÒÔ±ãÁ¬½Ó½ø¿ÉÖ´ÐÐÎļþ¡£ÎÒÃǵĴúÂë¿ÉÄܲúÉúÎÊÌ⣬ÒòΪ
ÔÚÍ·ÎļþÖÐÎÒÃÇûÓзÅÈëÈκκ¯ÊýÉùÃ÷¡£ÎªÁËÈ·±£Ò»ÇÐ˳Àû£¬ÎÒÃÇ»¹ÄÜ×öÊ²Ã´ÄØ£¿
-Wall
Ñ¡Ïî¿ÉÒÔ´ò¿ªËùÓÐÀàÐ͵ÄÓï·¨¾¯¸æ£¬ÒÔ±ã°ïÖúÎÒÃÇÈ·¶¨´úÂëÊÇÕýÈ·µÄ£¬
²¢ÇÒ¾¡¿ÉÄÜʵÏÖ¿ÉÒÆÖ²ÐÔ¡£µ±ÎÒÃÇʹÓÃÕâ¸öÑ¡Ïî±àÒëÎÒÃǵĴúÂëʱ£¬ÎÒÃǽ«¿´µ½ÏÂÊö¾¯¸æ£º
game.c:9: warning: implicit declaration of function `shuffle'ÕâÈÃÎÒÃÇÖªµÀ»¹ÓÐһЩ¹¤×÷Òª×ö¡£ÎÒÃÇÐèÒªÔÚÍ·ÎļþÖмÓÈëÒ»ÐдúÂ룬ÒÔ±ã¸æËß±àÒëÆ÷ÓйØ
shuffle
º¯ÊýµÄÒ»ÇУ¬ÈÃËü¿ÉÒÔ×ö±ØÒªµÄ¼ì²é¡£ÌýÆðÀ´ÏóÊÇÒ»ÖֽƱ磬µ«ÕâÑù×ö
¿ÉÒ԰Ѻ¯ÊýµÄ¶¨ÒåÓëʵÏÖ·ÖÀ뿪À´£¬Ê¹ÎÒÃÇÄÜÔÚÈκεط½Ê¹ÓÃÎÒÃǵĺ¯Êý£¬Ö»Òª°üº¬ÐµÄÍ·Îļþ
²¢°ÑËüÁ¬½Óµ½ÎÒÃǵÄÄ¿±êÎļþÖоͿÉÒÔÁË¡£ÏÂÃæÎÒÃǾͰÑÕâÒ»ÐмÓÈëdeck.hÖС£
void shuffle(deck_t *pdeck);Õâ¾Í¿ÉÒÔÏû³ýÄǸö¾¯¸æÐÅÏ¢ÁË¡£
ÁíÒ»¸ö³£ÓñàÒëÆ÷Ñ¡ÏîÊÇÓÅ»¯Ñ¡Ïî -O#
(¼´ -O2)¡£
ÕâÊǸæËß±àÒëÆ÷ÄãÐèҪʲô¼¶±ðµÄÓÅ»¯¡£±àÒëÆ÷¾ßÓÐÒ»ÕûÌ×¼¼ÇÉ¿ÉÒÔʹÄãµÄ´úÂëÔËÐеøü¿ìÒ»µã¡£
¶ÔÓÚÏóÎÒÃÇÕâÖÖС³ÌÐò£¬Äã¿ÉÄÜ×¢Òâ²»µ½²î±ð£¬µ«¶ÔÓÚ´óÐͳÌÐòÀ´Ëµ£¬Ëü¿ÉÒÔ´ó·ù¶ÈÌá¸ßÔËÐÐËÙ¶È¡£
Äã»á¾³£Åöµ½Ëü£¬ËùÒÔÄãÓ¦¸ÃÖªµÀËüµÄÒâ˼¡£
ÎÒÃǶ¼ÖªµÀ£¬´úÂëͨ¹ýÁ˱àÒë²¢²»Òâζ×ÅËü°´ÎÒÃǵÃÒªÇó¹¤×÷ÁË¡£Äã¿ÉÒÔʹÓÃÏÂÃæµÄÃüÁîÑéÖ¤ ÊÇ·ñËùÓеĺÅÂë¶¼±»Ê¹ÓÃÁË
game | sort - n | less²¢ÇÒ¼ì²éÓÐûÓÐÒÅ©¡£Èç¹ûÓÐÎÊÌâÎÒÃǸÃÔõô°ì£¿ÎÒÃÇÈçºÎ²ÅÄÜÉîÈëµ×²ã²éÕÒ´íÎóÄØ£¿ Äã¿ÉÒÔʹÓõ÷ÊÔÆ÷¼ì²éÄãµÄ´úÂë¡£´ó¶àÊý·¢Ðа涼Ìá¹©ÖøÃûµÄµ÷ÊÔÆ÷£ºgdb¡£Èç¹ûÄÇЩÖÚ¶àµÄÃüÁîÐÐÑ¡Ïî ÈÃÄã¸Ðµ½ÎÞËùÊÊ´Ó£¬ÄÇôÄã¿ÉÒÔʹÓÃKDEÌṩµÄÒ»¸öºÜºÃµÄǰ¶Ë¹¤¾ß KDbg¡£ »¹ÓÐһЩÆäËüµÄǰ¶Ë¹¤¾ß£¬ËüÃǶ¼ºÜÏàËÆ¡£Òª¿ªÊ¼µ÷ÊÔ£¬Äã¿ÉÒÔÑ¡Ôñ File->Executable È»ºóÕÒµ½ÄãµÄ
game
³ÌÐò¡£
µ±Äã°´ÏÂF5¼ü»òÑ¡Ôñ Execution->´Ó²Ëµ¥ÔËÐÐʱ£¬Äã¿ÉÒÔÔÚÁíÒ»¸ö´°¿ÚÖп´µ½Êä³ö¡£
Ôõô»ØÊ£¿ÔÚÄǸö´°¿ÚÖÐÎÒÃÇʲôҲ¿´²»µ½¡£²»Òªµ£ÐÄ£¬KDbgûÓгöÎÊÌâ¡£ÎÊÌâÔÚÓÚÎÒÃÇ
ÔÚ¿ÉÖ´ÐÐÎļþÖÐûÓмÓÈëÈκε÷ÊÔÐÅÏ¢£¬ËùÒÔKDbg²»ÄܸæËßÎÒÃÇÄÚ²¿·¢ÉúÁËʲô¡£±àÒëÆ÷Ñ¡Ïî
-g
¿ÉÒ԰ѱØÒªµÄµ÷ÊÔÐÅÏ¢¼ÓÈëÄ¿±êÎļþ¡£Äã±ØÐëÓÃÕâ¸öÑ¡Ïî±àÒëÄ¿±êÎļþ
£¨À©Õ¹ÃûΪ.o£©£¬ËùÒÔÃüÁîÐгÉÁË£º
gcc -g -c shuffle.c game.c gcc -g -o game game.o shuffle.oÕâ¾Í°Ñ¹³×Ó·ÅÈëÁË¿ÉÖ´ÐÐÎļþ£¬Ê¹gdbºÍKDbgÄÜÖ¸³öÔËÐÐÇé¿ö¡£µ÷ÊÔÊÇÒ»ÖÖºÜÖØÒªµÄ¼¼Êõ£¬ºÜ ÖµµÃÄ㻨ʱ¼äѧϰÈçºÎʹÓᣵ÷ÊÔÆ÷°ïÖú³ÌÐòÔ±µÄ·½·¨ÊÇËüÄÜÔÚÔ´´úÂëÖÐÉèÖᰶϵ㡱¡£ÏÖÔÚÄã¿ÉÒÔ ÓÃÓÒ¼üµ¥»÷µ÷ÓÃ
shuffle
º¯ÊýµÄÄÇÐдúÂ룬ÊÔ×ÅÉèÖöϵ㡣ÄÇÒ»ÐбßÉÏ»á³öÏÖÒ»¸ö
ºìÉ«µÄСԲȦ¡£ÏÖÔÚµ±Äã°´ÏÂF5¼üʱ£¬³ÌÐò¾Í»áÔÚÄÇÒ»ÐÐÍ£Ö¹Ö´ÐС£°´F8¿ÉÒÔÌøÈëshuffleº¯Êý¡£
ºÇ£¬ÎÒÃÇÏÖÔÚ¿ÉÒÔ¿´µ½ shuffle.c
ÖеĴúÂëÁË£¡ÎÒÃÇ¿ÉÒÔ¿ØÖƳÌÐòÒ»²½Ò»²½µØÖ´ÐУ¬
²¢¿´µ½¾¿¾¹·¢ÉúÁËʲôÊ¡£Èç¹ûÄã°Ñ¹â±êÔÝÍ£ÔÚ¾Ö²¿±äÁ¿ÉÏ£¬Ä㽫ÄÜ¿´µ½±äÁ¿µÄÄÚÈÝ¡£
Ì«ºÃÁË¡£Õâ±ÈÄÇÌõ printf
Óï¾äºÃ¶àÁË£¬ÊDz»ÊÇ£¿
±¾ÎÄ´óÌå½éÉÜÁ˱àÒëºÍµ÷ÊÔC³ÌÐòµÄ·½·¨¡£ÎÒÃÇÌÖÂÛÁ˱àÒëÆ÷×ß¹ýµÄ²½Ö裬ÒÔ¼°ÎªÁËÈÃ
±àÒëÆ÷×öÕâЩ¹¤×÷Ó¦¸Ã¸øgcc´«µÝÄÄЩѡÏî¡£ÎÒÃǼòÊöÁËÓйØÁ¬½Ó¹²Ïíº¯Êý¿âµÄÎÊÌ⣬
×îºó½éÉÜÁ˵÷ÊÔÆ÷¡£ÕæÕýÁ˽âÄãËù´ÓÊµĹ¤×÷»¹ÐèÒª¸¶³öÐí¶àŬÁ¦£¬µ«ÎÒÏ£Íû±¾ÎÄ
ÄÜÈÃÄãÕýÈ·µØÆð²½¡£Äã¿ÉÒÔÔÚ gcc
¡¢ as
ºÍ ld
µÄ man
ºÍ info
pageÖÐ
ÕÒµ½¸ü¶àµÄÐÅÏ¢¡£
×Ô¼º±àд´úÂë¿ÉÒÔÈÃÄãѧµ½¸ü¶àµÄ¶«Î÷¡£×÷ΪÁ·Ï°Äã¿ÉÒÔÒÔ±¾ÎĵÄֽůÓÎϷΪ»ù´¡£¬±àд Ò»¸ö21µãÓÎÏ·¡£ÄÇʱÄã¿ÉÒÔѧѧÈçºÎʹÓõ÷ÊÔÆ÷¡£Ê¹ÓÃGUIµÄKDbg¿ªÊ¼¿ÉÒÔ¸üÈÝÒ×һЩ¡£ Èç¹ûÄãÿ´ÎÖ»¼ÓÈëÒ»µãµã¹¦ÄÜ£¬ÄÇôºÜ¿ì¾ÍÄÜÍê³É¡£Çмǣ¬Ò»¶¨Òª±£³Ö³ÌÐòÒ»Ö±ÄÜÔËÐУ¡
ÒªÏë±àдһ¸öÍêÕûµÄÓÎÏ·£¬ÄãÐèÒªÏÂÃæÕâЩÄÚÈÝ£º
|
Ö÷Ò³ÓÉLinuxFocus±à¼×éά»¤
© Lorne Bailey, FDL LinuxFocus.org µã»÷ÕâÀïÏòLinuxFocus±¨¸æ´íÎó»òÌá³öÒâ¼û |
·ÒëÐÅÏ¢:
|
2002-03-13, generated by lfparser version 2.27