ºìÁªLinuxÃÅ»§
Linux°ïÖú

linuxѧϰ±Ê¼Ç¶þ

·¢²¼Ê±¼ä:2007-01-11 18:42:58À´Ô´:ºìÁª×÷Õß:waterathena
±àдÁË»ù±¾µÄ³ÌÐòÀ´ÊÔÑéÏÂlinuxϵıàÒë¡¢Á´½Ó¡¢ÔËÐС£

g++ -o filename filename.cpp
g++ -o filename filename.C
gcc -o filename filename.c
c³ÌÐòÓÃgcc±àÒ룻
C£«£«³ÌÐòÓÃg++±àÒ룻
¶øÇÒÃüÁîµÄ¸ñʽ»ù±¾Ïàͬ£»

ÁíÍâÔÚ±¾ÂÛ̳ÕÒÁ˸öºÜºÃµÄmakefileµÄѧϰÀý×Ó£¬ÏÖÔÚÎÒÒ²°ÑËüÌù³öÀ´£¬Ï£ÍûºÃ¶«Î÷ÄÜ´ó¼ÒÒ»Æð¿´¿´¡£
¼ÙÉèÎÒÃÇÓÐÏÂÃæÕâÑùµÄÒ»¸ö³ÌÐò£¬Ô´´úÂëÈçÏ£º
/* main.c */
#include "mytool1.h"
#include "mytool2.h"
int main(int argc£¬char **argv)
{ mytool1_print("hello")£»
mytool2_print("hello")£» }
/* mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str)£»
#endif
/* mytool1.c */
#include "mytool1.h"
void mytool1_print(char *print_str)
{ printf("This is mytool1 print %s "£¬print_str)£» }
/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str)£»
#endif
/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{ printf("This is mytool2 print %s "£¬print_str)£» }
µ±È»ÓÉÓÚÕâ¸ö³ÌÐòºÜ¶Ì£¬ÎÒÃÇ¿ÉÒÔÕâÑùÀ´±àÒë:
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c g
cc -o main main.o mytool1.o mytool2.o
ÕâÑùµÄ»°ÎÒÃÇÒ²¿ÉÒÔ²úÉúmain³ÌÐò£¬¶øÇÒÒ²²»ÊǺÜÂé·³¡£µ«ÊÇÈç¹ûÎÒÃÇ¿¼ÂÇÒ»ÏÂÈç¹ûÓÐÒ»ÌìÎÒÃÇÐÞ¸ÄÁËÆäÖеÄÒ»¸öÎļþ(±ÈÈç˵mytool1.c)ÄÇôÎÒÃÇÄѵÀ»¹ÒªÖØÐÂÊäÈëÉÏÃæµÄÃüÁî?Ò²ÐíÄã»á˵£¬Õâ¸öºÜÈÝÒ×½â¾ö°¡£¬ÎÒдһ¸ö SHELL½Å±¾£¬ÈÃËü°ïÎÒÈ¥Íê³É²»¾Í¿ÉÒÔÁË¡£ÊǵĶÔÓÚÕâ¸ö³ÌÐòÀ´Ëµ£¬ÊÇ¿ÉÒÔÆðµ½×÷Óõġ£µ«Êǵ±ÎÒÃÇ°ÑÊÂÇéÏëµÄ¸ü¸´ÔÓÒ»µã£¬Èç¹ûÎÒÃǵijÌÐòÓм¸°Ù¸öÔ´³ÌÐòµÄʱºò£¬ÄѵÀÒ²Òª±àÒëÆ÷ÖØÐÂÒ»¸öÒ»¸öµÄÈ¥±àÒë?
Ϊ´Ë£¬´ÏÃ÷µÄ³ÌÐòÔ±ÃÇÏë³öÁËÒ»¸öºÜºÃµÄ¹¤¾ßÀ´×öÕâ¼þÊÂÇ飬Õâ¾ÍÊÇmake¡£ÎÒÃÇÖ»ÒªÖ´ÐÐÒÔÏÂmake£¬¾Í¿ÉÒÔ°ÑÉÏÃæµÄÎÊÌâ½â¾öµô¡£ÔÚÎÒÃÇÖ´ÐÐmake֮ǰ£¬ÎÒÃÇÒªÏȱàдһ¸ö·Ç³£ÖØÒªµÄÎļþ¡£--Makefile¡£¶ÔÓÚÉÏÃæµÄÄǸö³ÌÐòÀ´Ëµ£¬¿ÉÄܵÄÒ»¸öMakefileµÄÎļþÊÇ£º
main£ºmain.o mytool1.o mytool2.o
(tab)gcc -o main main.o mytool1.o mytool2.o
main.o£ºmain.c mytool1.h mytool2.h
(tab)gcc -c main.c
mytool1.o£ºmytool1.c mytool1.h
(tab)gcc -c mytool1.c
mytool2.o£ºmytool2.c mytool2.h
(tab)gcc -c mytool2.c
Õâ¸öÎļþ¾Í±£´æΪmakefile1,È»ºóÔÚ¸ÃÎļþĿ¼ÏÂÖ´ÐÐmake -f makefile1
ÓÐÁËÕâ¸öMakefileÎļþ£¬²»ÂÛÎÒÃÇʲôʱºòÐÞ¸ÄÁËÔ´³ÌÐòµ±ÖеÄʲôÎļþ£¬ÎÒÃÇÖ»ÒªÖ´ÐÐmakeÃüÁÎÒÃǵıàÒëÆ÷¶¼Ö»»áÈ¥±àÒëºÍÎÒÃÇÐ޸ĵÄÎļþÓйصÄÎļþ£¬ÆäËüµÄÎļþËüÁ¬Àí¶¼²»ÏëÈ¥ÀíµÄ¡£
ÏÂÃæÎÒÃÇѧϰMakefileÊÇÈçºÎ±àдµÄ¡£
ÔÚMakefileÖÐÒ²#¿ªÊ¼µÄÐж¼ÊÇ×¢ÊÍÐÐ.MakefileÖÐ×îÖØÒªµÄÊÇÃèÊöÎļþµÄÒÀÀµ¹ØϵµÄ˵Ã÷¡£Ò»°ãµÄ¸ñʽÊÇ£º
target£ºcomponents
TAB rule
µÚÒ»ÐбíʾµÄÊÇÒÀÀµ¹Øϵ¡£µÚ¶þÐÐÊǹæÔò¡£
±ÈÈç˵ÎÒÃÇÉÏÃæµÄÄǸöMakefileÎļþµÄµÚ¶þÐС£main£ºmain.o mytool1.o mytool2.o
±íʾÎÒÃǵÄÄ¿±ê(target)mainµÄÒÀÀµ¶ÔÏó(components)ÊÇmain.o mytool1.omytool2.o µ±ÒÐÀµµÄ¶ÔÏóÔÚÄ¿±êÐ޸ĺóÐ޸ĵĻ°£¬¾ÍҪȥִÐйæÔòÒ»ÐÐËùÖ¸¶¨µÄÃüÁî¡£¾ÍÏóÎÒÃǵÄÉÏÃæÄǸöMakefileµÚÈýÐÐËù˵µÄÒ»ÑùÒªÖ´ÐÐ gcc-o main main.o mytool1.o mytool2.o ×¢Òâ¹æÔòÒ»ÐÐÖеÄTAB±íʾÄÇÀïÊÇÒ»¸öTAB¼ü
MakefileÓÐÈý¸ö·Ç³£ÓÐÓõıäÁ¿¡£·Ö±ðÊÇ$@£¬$^£¬$<´ú±íµÄÒâÒå·Ö±ðÊÇ£º
$@--Ä¿±êÎļþ£¬$^--ËùÓеÄÒÀÀµÎļþ£¬$<--µÚÒ»¸öÒÀÀµÎļþ¡£
Èç¹ûÎÒÃÇʹÓÃÉÏÃæÈý¸ö±äÁ¿£¬ÄÇôÎÒÃÇ¿ÉÒÔ¼ò»¯ÎÒÃǵÄMakefileÎļþΪ£º
# ÕâÊǼò»¯ºóµÄMakefile
main£ºmain.o mytool1.o mytool2.o
gcc -o $@ $^
main.o£ºmain.c mytool1.h mytool2.h
gcc -c $<
mytool1.o£ºmytool1.c mytool1.h
gcc -c $<
mytool2.o£ºmytool2.c mytool2.h
gcc -c $<
¾­¹ý¼ò»¯ºó,ÎÒÃǵÄMakefileÊǼòµ¥ÁËÒ»µã£¬²»¹ýÈËÃÇÓÐʱºò»¹Ïë¼òµ¥Ò»µã¡£ÕâÀïÎÒÃÇѧϰһ¸öMakefileµÄȱʡ¹æÔò
.c.o£º
gcc -c $<
Õâ¸ö¹æÔò±íʾËùÓÐµÄ .oÎļþ¶¼ÊÇÒÀÀµÓëÏàÓ¦µÄ.cÎļþµÄ¡£ÀýÈçmytool.oÒÀÀµÓÚmytool.cÕâÑùMakefile»¹¿ÉÒÔ±äΪ£º
# ÕâÊÇÔÙÒ»´Î¼ò»¯ºóµÄMakefile
main£ºmain.o mytool1.o mytool2.o
gcc -o $@ $^
.c.o£º
gcc -c $<

ÔٴθÐл׫д´ËÎĵÄ×÷Õߣ¬ÎÒÖ»ÊÇתÌù£¬±íʾ¸Ðл¡£
^_^
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. cxqcxq0177 ÓÚ 2007-01-12 16:06:38·¢±í:

    ºÇºÇ£¬ÎÒ˵ÎÒÔõôÕâôÊìϤÄØ