¸¸¾à 5°³ÀÇ ½î¾²·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥À» Å×½ºÆ® Çϱâ À§Çؼ ÄÄÆÄÀÏÀ» ÇÑ´Ù¸é ´ÙÀ½°ú °°Àº ¹æ½ÄÀ» »ç¿ëÇØ¾ß ÇÒ°ÍÀÌ´Ù.
$ gcc -c 1.c
$ gcc -c 2.c
$ gcc -c 3.c
$ gcc -c 4.c
$ gcc -c 5.c
$ gcc -o myprg 1.o 2.o 3.o 4.o 5.o
|
¸Å¹ø myprg ¶ó´Â ½ÇÇàÆÄÀÏÀ» ¸¸µé¾î ³»±â À§Çؼ À§ÀÇ ¹æ½Ä´ë·Î ÄÄÆÄÀÏ ÇÏ´Â°Ç º¸Åë ÀÏÀÌ ¾Æ´Ï´Ù. ±×³ª¸¶ À§ÀÇ °æ¿ì´Â °£´ÜÇÑ ÇüÅÂÀÌ°í °¢Á¾ gcc ¿É¼Ç, library ¸µÅ© include ÆÄÀÏÀÌ ÆнºÁöÁ¤µîÀÌ µé¾î°¡°Ô µÇ¸é, ÄÚµùÇÏ´Â ½Ã°£º¸´Ù ÄÄÆÄÀÏ ÇÏ´Â ½Ã°£ÀÌ ´õ°É¸®´Â »çÅ°¡ ¹ú¾îÁú°ÍÀÌ´Ù.
ÀÌ·¯ÇÑ ÀÏ·ÃÀÇ ÀÛ¾÷À» ÀÚµ¿È ½ÃÄÑÁÖ´Â ÇÁ·Î±×·¥ÀÌ ÀÖÀ¸¸é ÁÁÀ»°ÍÀÌ´Ù¶ó°í ´©±º°¡ »ý°¢À» Çß°í ±×·¡¼ ³ª¿Â°Ô make ¶ó´Â µµ±¸(ÇÁ·Î±×·¥) ÀÌ´Ù. make ¸¦ »ç¿ëÇϸé À§ÀÇ ¸ðµç ÀÏ·ÃÀÇ ÄÄÆÄÀÏÀ» ÀÚµ¿ÀûÀ¸·Î °ü¸® ÇØÁÙ»Ó¸¸ ¾Æ´Ï¶ó, ÃÖ±Ù¿¡ ¹Ù²ï ½î¾²¸¸ ÄÄÆÄÀÏÇؼ ¸µÅ©½ÃÄÑÁÖ´Â ÀϱîÁö ¾Ë¾Æ¼ ó¸®ÇÑ´Ù. ¿¹¸¦ µé¾î 1.c ¸¦ ¼öÁ¤Çß´Ù¸é 2.c, 3.c 4.c, 5.c ´Â ±×´ë·Î µÎ°í ´ÜÁö 1.c ¸¸À» ÄÄÆÄÀÏ Çؼ object ÆÄÀÏÀ» ¸¸µé°í, ³ª¸ÓÁö ±âÁ¸¿¡ ¸¸µé¾îÁ® ÀÖ´ø object ÆÄÀÏ°ú ¸µÅ©¸¦ ½ÃÄÑÁØ´Ù. ±×·¯¹Ç·Î ½Ã°£À» Å©°Ô Àý¾àÇÒ¼ö ÀÖÀ¸¸ç, ÇÁ·Î±×·¡¸Ó´Â "¾î¶»°Ô ÄÄÆÄÀÏ µÉ °ÍÀΰ¡" ¶ó´Â ºÎ¼öÀûÀÎ °Í¿¡ ½Å°æ¾²Áö ¾Ê°í ÄÚµù¿¡¸¸ Àü³äÇÒ¼ö ÀÖ´Ù.
object ÆÄÀÏÀ» ¸¸µé°í À̵éÀ» link ½ÃÄѼ ÃÖÁ¾ ½ÇÇà ÆÄÀÏÀ» ¸¸µé±â À§Çؼ, ÇÁ·Î±×·¡¸Ó´Â º¸Åë ¾î¶² source ¸¦ ÇÊ¿ä·Î ÇÏ°í, ¾î¶² Çì´õÆÄÀÏÀÌ ÇÊ¿ä·Î ÇÏ´ÂÁö, ±×¸®°í ¾î¶² ¶óÀ̺귯¸®°¡ ÇÊ¿ä·Î ÇÏ°í ÀÖ´ÂÁö, ÃÖÁ¾ÀûÀ¸·Î ¸¸µé¾îÁú ½ÇÇàÆÄÀÏÀÇ À̸§ÀÌ ¹«¾ùÀÎÁö¸¦ ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. ¸¶Âù°¡Áö·Î make ¿ª½Ã "ÄÄÆÄÀÏ ±ÔÄ¢" À» ¾Ë¾Æ¾ß ÇÒÇÊ¿ä°¡ ÀÖ´Ù. ÀÌ·¯ÇÑ ±ÔÄ¢À» Á¤ÇÑ ¼³Á¤ÆÄÀÏÀ» ÂüÁ¶ÇØ¾ß Çϴµ¥ º¸Åë "Makefile" ¶ó´Â À̸§ÀÇ ÆÄÀÏÀ» ÂüÁ¶ÇÑ´Ù. Makefile ¿¡´Â ÇØ´ç ½î¾²¸¦ ÄÄÆÄÀÏ Çϱâ À§Çؼ, ¾î¶² ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇØ¾ß ÇÏ´ÂÁö, ÄÄÆÄÀÏÈÄ ¾î¶²
½ÇÇàÆÄÀÏ(Target) ¸¦ ¸¸µé¾î¾ß ÇÏ´ÂÁö, °¢ object ÆÄÀÏÀÇ ÀÇÁ¸¼º°ü°è´Â ¾î¶°ÇÑÁö, ÄÄÆÄÀϽà ¾î¶² Çì´õÆÄÀϵð·ºÅ丮¿Í, ¶óÀ̺귯¸®¸¦ ÂüÁ¶ÇÒÁö µî¿¡ ´ëÇÑ ±ÔÄ¢À» ´ã°í ÀÖ´Ù.
´ÙÀ½Àº Makefile ÀÇ °£´ÜÇÑ ÇüÅÂÀÌ´Ù.
1 CC = gcc
2 CXX = g++
3 CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG
4 CXXFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG
5 INCPATH = -I/usr/local/include/mysql
6 LINK = g++
7 LIBS = -L/usr/local/lib/mysql -lmysqlclient -lcrypt
8 # FILE
9 SOURCES = main.cc
10 sql.cc
11 OBJECTS = main.o
12 sql.o
13 TARGET = myprg
14 # Implict rules
15 .SUFFIXES: .cc .c
16 .cc.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
17 .c.o: $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
18 # build rule
19 all: $(TARGET)
20 $(TARGET): $(OBJECTS)
21 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
22 clean:
23 -rm -f $(OBJECTS) $(TARGET)
24 -rm -f core
25 # complie
26 main.o: main.cc
27 sql.o : sql.cc
|
°¢ÁÙÀÇ ¹øÈ£´Â ¼³¸íÀÇ ÆíÀǸ¦ À§Çؼ ºÙÀΰŴÙ.
¾ð¶æ º¸¸é ½©½ºÅ©¸³Æ® ¾ð¾î¿Í ²çÀ¯»çÇÑ ºÐÀ§±â¸¦ dz±èÀ» ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù. make ¿¡¼´Â make ÆÄÀÏÀÇ ³»¿ëÀ» ½±°í °£ÆíÇÏ°Ô ÀÛ¼ºÇϵµ·Ï Çϱâ À§Çؼ "¸ÅÅ©·Î" ¸¦ Á¦°øÇÑ´Ù. ¸ÅÅ©·ÎÀÇ »ç¿ëÀº shell ¿¡¼ÀÇ º¯¼ö»ç¿ë°ú ¸Å¿ì ºñ½ÁÇÏ´Ù.
»ç¿ë¹æ¹ýÀº $(¸ÅÅ©·Î¸í) ½ÄÀ¸·Î ÇÊ¿äÇÒ¶§ ºÒ·¯¾²¸é µÈ´Ù.
1 ¹øÁÙ ºÎÅÍ 13 ¹øÁÙ±îÁö´Â °¢Á¾ ¸ÅÅ©·Î¸¦ ÁöÁ¤ÇßÀ½À» ¾Ë¼ö ÀÖ´Ù.
15 ¹øÁÙÀÇ .SUFFIXES ´Â ÆÄÀÏÀÇ È®ÀåÀÚ¿¡ µû¸¥ ÄÄÆÄÀÏ ±ÔÄ¢À» Á¤ÀÇÇØ ÁÖ±â À§Çؼ make ¿¡¼ ³»ºÎÀûÀ¸·Î Á¦°øÇÏ´Â Å°¿öµå·Î, ÄÄÆÄÀÏ ±ÔÄ¢À» Á¤ÀÇÇÒ ÆÄÀÏÀÇ È®ÀåÀÚ¸¦ Àû¾îÁØ´Ù.
16 - 17 ¹ø° ÁÙÀº .SUFFIXES ¿¡¼ Á¤ÀÇÇÑ È®ÀåÀÚ¸¦ À§ÇÑ ÄÄÆÄÀÏ ±ÔÄ¢À» Àû¿ëÇÑ °ÍÀÌ´Ù. 16 ¹ø°ÁÙÀº .cc ¿¡ ´ëÇÑ ºôµå±ÔÄ¢Àº ":" ÀÌÇÏÀÇ ±ÔÄ¢¿¡ µû¶ó¼ ÄÄÆÄÀÏÀ» ÇÏ°í, ÄÄÆÄÀÏÈÄ ¸¸µé¾îÁö´Â object ÆÄÀÏÀº È®ÀåÀÚ ".o"¸¦ ºÙ¿©¶ó´Â ¶æÀÌ´Ù. 16 ¹ø° ÁÙÀ» ¸ÅÅ©·Î ġȯÀ» Çؼ ¿ÏÀüÇÑ ¸í·É¾î·Î ¹Ù²Ù¾î º¸¸é (sql.cc ¸¦ ÄÄÆÄÀÏÇÑ´Ù°í °¡Á¤ÇÏÀÚ)
$ g++ -c -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/local/include/mysql -o sql.o sql.cc |
ÀÌ µÈ´Ù. 17 ¹ø° ÁÙÀÇ °æ¿ì´Â È®ÀåÀÚ°¡ .c ÀÎ ÆÄÀÏ¿¡ ´ëÇÑ ºôµå ±ÔÄ¢Àε¥, À̶§´Â g++ ´ë½Å gcc ¸¦ »ç¿ëÇϵµ·Ï ±ÔÄ¢ÀÌ Á¤ÇØÁ® ÀÖ´Ù.
À§¿¡¼ º¸¸é $@ °¡ »ç¿ëµÇ¾ú´Âµ¥, À̴ ŸÄÏÀÇ ÀüüÀ̸§À» ³ªÅ¸³»´Â »ý·«ÇüÀÌ´Ù. .cc.o ¿¡¼ Ÿ°ÙÀÇ À̸§Àº ÆÄÀϸí.o ·Î Ç϶ó°í ÁöÁ¤µÇ¾î ÀÖÀ½À¸·Î sql.cc ¿¡ ´ëÇؼ $@ ´Â sql.o ·Î ġȯµÈ´Ù. ´«Ä¡ ë°ÚÁö¸¸ "$<" ´Â ¿ø·¡ ÆÄÀÏ ¸íÀ» ³ªÅ¸³½´Ù.
19-24 ´Â build ruleÀÌ Á¤ÀǵǾî ÀÖ´Ù.
make ÇÁ·Î±×·¥¿¡ ¾Æ±Ô¸ÕÆ®¸¦ ÁÖ´Â Çü½ÄÀ¸·Î ½ÃÇàµÇ´Âµ¥, ¾Æ·¡¿Í °°Àº ¹æ¹ýÀ¸·Î ½ÇÇàÇÑ´Ù.
make all ¸í·ÉÀ» ½ÇÇàÇϸé g++ ÀÏ ÀÌ¿ëÇؼ ½ÇÇàÆÄÀÏÀ» ¸¸µé¾î³»°í, make clean À» ½ÇÇàÇÏ¸é ±×µ¿¾È »ý¼ºµÇ¾ú´ø ¸ðµç ¿ÀºêÁ§Æ® ÆÄÀÏ°ú core ÆÄÀÏÀ» Áö¿ì°Ô µÈ´Ù. ¹°·Ð ÀÌ·¯ÇÑ build ·ê °°Àº°ÍÀº »ç¿ëÀÚ°¡ ÇÊ¿ä·Î ÇÒ°æ¿ì ¾ó¸¶µçÁö »õ·Î¿î ±â´ÉÀ» Ãß°¡½Ãų¼ö ÀÖ´Ù.
Áö±Ý±îÁö make ÀÇ »ç¿ë¹ýÀ» °£´ÜÇÏ°Ô ³ª¸¶ ¾Ë¾Æ º¸¾Ò´Ù. Áö±Ý±îÁöÀÇ ¼³¸íÀº make ÆÄÀÏÀÇ °¡Àå ÀϹÝÀûÀÌ°í °£´ÜÇÑ »ç¿ëÀÇ ¹æ¹ýÀÌ´Ù. ±×·¸´Ù°í ÇÏ´õ¶óµµ À§ÀÇ Á¤µµ¸¸ »ç¿ëÇÒÁÙ ¾Ë¾Æµµ ´ëºÎºÐÀÇ ÇÁ·ÎÁ§Æ® ÇÁ·Î±×·¥À» °ü¸®Çϴµ¥¿¡´Â ¹®Á¦´Â ¾øÀ»°ÍÀÌ´Ù. ÀÌ ¹®¼¿¡¼ Á¦°øÇÏÁö ¾Ê´Â ´õ °í±ÞÀÇ ±â´ÉÀº ½º½º·Î Á¶±Ý¾¿ ¹è¿ö³ª°¡¸é µÉ°ÍÀÌ´Ù.
´ÙÀ½¹ø¿¡´Â Makefile ¸¦ ÀÚµ¿ÀûÀ¸·Î ¸¸µé¾îÁÖ´Â tmake ¶õ µµ±¸¿¡ ´ëÇÑ ¹®¼¸¦ Á¦°øÇϵµ ·Ï ÇÏ°Ú´Ù.