ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. Hello World ´Ù½Ã º¸±â
hello world ÇÁ·Î±×·¥À» ´Ù½Ã Çѹø º¸±â·Î ÇÏÀÚ. #include <stdio.h> int main(int argc, char **argv) { printf("Hello World!!!\n"); return 1; }À§ ÇÁ·Î±×·¥À» ÀÚ¼¼È÷ ¶â¾îº¸¸é, #include¹®ÀÌ º¸ÀÏ °ÍÀÌ´Ù. À̰ÍÀÌ ¾îµð¿¡ ¾²´Â ¹°°ÇÀÎÁö ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇÒ °ÍÀÌ´Ù. ¿ì¸®´Â 7Àå ÇÔ¼öÆí¿¡¼ ÇÔ¼ö¿¡ ´ëÇØ¼ ´Ù·ç¾ú´Ù. À̸¦ ÅëÇØ¼ ¿ì¸®´Â ÇÔ¼ö¸¦ »ç¿ëÇϱâ À§Çؼ´Â ÇÔ¼ö¼±¾ð°ú ÇÔ¼ö¿øÇüÀÌ ÇÊ¿äÇÏ´Ù´Â °ÍÀ» ¾Ë°Ô µÇ¾ú´Ù. ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â Áߺ¹µÇ´Â Äڵ带 µû·Î ¹¾î µÒÀ¸·Î½á, ÄÚµå°ü¸®¸¦ ½±°Ô Çϱâ À§ÇÔÀ̶ó´Â °Íµµ ¿ª½Ã ¾Ë°í ÀÖ´Ù. ÇÏÁö¸¸ ÆíÇϰÚÁö¶ó°í¸¸ ¾Ë°í ÀÖÀ» »Ó, ½ÇÁ¦ ¾î¶»°Ô ÆíÇÏ°Ô »ç¿ëµÇ´ÂÁö´Â °æÇèÀ» ÇØº¸Áø ¸øÇß´Ù.
ÀÚ.. ¿ì¸®´Â ÇÔ¼ö¶ó´Â °ÍÀ» ¾Ë°í ÀÖ´Ù. ±×·¸´Ù¸é ¾î¶»°Ô ÇØ¾ß ÇÔ¼ö¸¦ ´õ ÆíÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖÀ»±î. ´äÀº ÇÔ¼ö¸¦ À§ÇÑ Äڵ带 µû·Î ºÐ¸®½ÃŲ´Ù ÀÌ´Ù. À§ÀÇ Hello World ÇÁ·Î±×·¥Àº ÀÌ·¯ÇÑ ÀüÇüÀûÀÎ ¸ð½ÀÀ» º¸¿©ÁÖ°í ÀÖ´Ù. printf ÇÔ¼ö´Â °ÅÀÇ ¸ðµç ÇÁ·Î±×·¥¿¡¼ ÇʼöÀûÀ¸·Î »ç¿ëµÇ´Â ÇÔ¼ö´Ù. ÀÌ·± Äڵ带 »ç¿ëÀÚ°¡ ÇÊ¿äÇÒ¶§ ¸¶´Ù ÀÏÀÏÀÌ »ç¿ëÇÏ´Â°Ç ¿©°£ ±ÍÂúÀºÀÏÀÌ ¾Æ´Ò °ÍÀÌ´Ù. ±×·¸´Ù¸é printf ÇÔ¼ö¸¦ º°µµÀÇ ÄÚµå·Î ¸¸µé¾î¼, ¸ðµâÇüÅ·Π¸¸µé¾î µÎ¸é µÉ°ÍÀÌ´Ù. ±×·¡¼ printf ÇÔ¼ö°¡ ÇÊ¿äÇÒ ¶§, °¡Á®´Ù ¾²±â¸¸ ÇÏ¸é µÈ´Ù.
±×·±µ¥, ÄÄÆÄÀÏ·¯´Â printf ÇÔ¼ö°¡ ¾î¶² ¸ð½ÀÀ» °¡Áö´ÂÁö ¾Ë ¼ö°¡ ¾ø´Ù. ±×·¯´Ï±î ¸®ÅϰªÀÌ ¹«¾ùÀ̰í, ÀÎÀÚ·Î ¹«¾ùÀÌ »ç¿ëµÇ´Â Áö¸¦ ¾Ë ¼ö°¡ ¾ø´Ù´Â ¾ê±â°¡ µÈ´Ù. ±×·¯¹Ç·Î ÄÄÆÄÀÏ·¯¿¡°Ô printf ÇÔ¼öÀÇ Á¤º¸¸¦ ¾Ë·ÁÁÙ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ±×°Ô #include ¹®ÀÌ ÇÏ´Â ÀÏÀÌ´Ù. stdio.h´Â Ç¥ÁØÀÔÃâ·Â°ú °ü·ÃµÈ ÇÔ¼öÀÇ Á¤º¸°¡ µé¾îÀÖ´Â ÆÄÀÏ·Î Çì´õÆÄÀÏÀ̶ó°í ºÎ¸¥´Ù. ÀÌ Çì´õÆÄÀÏ¿¡´Â printf ÇÔ¼ö°¡ ¼±¾ðµÇ¾î ÀÖ´Ù. stdio.h Çì´õÆÄÀÏÀº /usr/include µð·ºÅ丮 ¹Ø¿¡ Á¸ÀçÇÑ´Ù.
ÀÌÁ¦ ¿ì¸®´Â stdio.h ¸¸À» include ½ÃÅ´À¸·Î½á, ¾î´À Äڵ忡¼µçÁö °£´ÜÇÏ°Ô printf ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÄÄÆÄÀÏ °úÁ¤
ÀÌÁ¦ À§ÀÇ hello world ÇÁ·Î±×·¥ÀÌ ¾î¶»°Ô ÄÄÆÄÀÏÀÌ µÇ´ÂÁö ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. ÇÁ·Î±×·¥ÀÇ À̸§Àº hello.c ÀÌ´Ù.
µ¡¼À ÇÔ¼ö¸¦ °¡Áø ÇÁ·Î±×·¥
±×·³ µ¡¼À ÇÔ¼ö¸¦ °¡Áø °è»ê±â ÇÁ·Î±×·¥À» ¸¸µé¾î¼, ¸ðµâº°·Î ÀÛ¼ºÇϰí À̰͵éÀ» object ÆÄÀÏ·Î ¸¸µé¾î¼ link ½ÃÄѼ ½ÇÇàÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.
¸ðµâº°·Î ÀÛ¼ºÇÏÁö ¾Ê°í, ÇϳªÀÇ ÆÄÀÏ·Î ÀÌ·ç¾îÁø ÇÁ·Î±×·¥Àº ¾Æ·¡¿Í °°ÀÌ ÀÛ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. #include <stdio.h> int sum(int a, int b); int main(int argc, char **argv) { int value; value = sum(120, 199); printf("%d\n", value); } int sum(int a, int b) { return a+b; }¾ÆÁÖ °£´ÜÇÏ¸ç ¹®Á¦¾øÀÌ ÀÛ¼ºµÉ °ÍÀÌ´Ù. ¶ÇÇÑ µ¡¼ÀÀ» À§ÇÑ sum À̶ó´Â ÇÔ¼ö¸¦ ¸¸µé¾úÀ¸´Ï, ÀÌÈÄ µ¡¼À°è»êÀÌ ÇÊ¿äÇÒ ¶§ ¸¶´Ù, ±×³É sum ÇÔ¼ö¸¦ ±×´ë·Î ¾²±â¸¸ ÇÏ¸é µÉ°ÍÀÌ´Ù. ±×·±µ¥ ÀÌ ÇÁ·Î±×·¥Àº ÅëÂ¥·Î ÀÛ¼ºµÇ¾î Àֱ⠶§¹®¿¡, ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼ sum ÇÔ¼ö¸¦ »ç¿ëÇÒ·Á°í Çϸé copy & paste ÇÒ ¼ö ¹Û¿¡ ¾ø´Ù. À̰ÍÀº ºñÈ¿À² ÀûÀÌ´Ù. ÀÌÁ¦ sum ÇÔ¼ö¸¦ ¸ðµâÇü½ÄÀ¸·Î ¿ÏÀüÈ÷ ºÐ¸® ½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. À̸¦ À§Çؼ´Â ´ÙÀ½°ú °°ÀÌ 3°³ÀÇ ÆÄÀÏÀÌ ¸¸µé¾îÁ®¾ß ÇÑ´Ù.
int sum(int a, int b);
ÀÌÁ¦ sum ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖ´Â C Äڵ带 ¸¸µé¾îº¸ÀÚ. ¿ª½Ã °£´ÜÇÏ´Ù. ÆÄÀÏÀ̸§Àº sum.c·Î ÇϰڴÙ. int sum(int a, int b) { return a + b; }
¸¶Áö¸·À¸·Î main ÇÔ¼ö¸¦ ¸¸µé¾î º¸ÀÚ. ÆÄÀÏÀ̸§Àº calc.c ·Î ÇϰڴÙ. #include "sum.h" #include <stdio.h> int main() { int value; value = sum(130, 199); printf("%d\n", value); }
include ´Â Çì´õÆÄÀÏÀÇ °æ·Î
¿ì¸®´Â #include Ű¿öµå¸¦ ÀÌ¿ëÇØ¼, Æ÷ÇÔ½Ãų Çì´õÆÄÀÏÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. À̶§ Çì´õÆÄÀÏÀÇ ¿ÏÀüÇÑ °æ·Î¸¦ Æ÷ÇÔ½ÃÄÑ Áà¾ß ÇÑ´Ù. ¸¸¾à µû¿òÇ¥¸¦ »ç¿ëÇß´Ù¸é, ÀÌ´Â ÇöÀç µð·ºÅ丮¿¡¼ Çì´õÆÄÀÏÀ» ã°Ú´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ±×·¸Áö ¾Ê°í <> ¸¦ »ç¿ëÇß´Ù¸é, Ç¥ÁØ Include µð·ºÅ丮¿Í ÄÄÆÄÀÏ·¯ ¿É¼ÇÀ» ÅëÇØ¼ ÁöÁ¤µÈ µð·ºÅ丮¿¡¼ ã°ÔµÈ´Ù. À¯´Ð½º ½Ã½ºÅÛÀÇ °æ¿ì /usr/include °¡ Ç¥ÁØ Include ÆÄÀÏÀÌ µÈ´Ù.
Çì´õÆÄÀÏÀ» ãÀ» °æ·ÎÀÇ ÁöÁ¤Àº -I¿É¼ÇÀ» ÀÌ¿ëÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î /home/yundream/include ¿¡¼ ãµµ·Ï ÇÏ±æ ¿øÇÑ´Ù¸é # gcc -I/home/yundream/include -o sum sum.c¿Í °°ÀÌ ÇÏ¸é µÈ´Ù.
¸¸¾à /home/yundream/include ¸¦ Çì´õÆÄÀÏ Ã£±â °æ·Î·Î ÁöÁ¤ÇÏ°í ½Í´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. #include "/home/yundream/include" ¸ðµâº° ºÐÇÒ ÄÄÆÄÀÏ
ÀÚ ÀÌÁ¦ sum.h, sum,c, calc,c 3°³ÀÇ ÆÄÀÏÀÌ ¸¸µé¾îÁ³´Ù. ÀÌ 3°³ÀÇ ÆÄÀÏÀ» ÄÄÆÄÀÏÇØ¼ ½ÇÇà°¡´ÉÇÑ ÇÁ·Î±×·¥À» ¸¸µé¾îº¸ÀÚ.
À§¿¡¼ ¾ð±ÞµÇ¾úµíÀÌ °¡Àå ¸ÕÀú ÇØ¾ßÇÒÀÏÀº sum.c ¿Í calc.c ¸¦ ±â°è¾î°¡ ÇØ¼®°¡´ÉÇÑ object ÄÚµå·Î ¸¸µå´Â ÀÏÀÌ´Ù. ¿ÀºêÁ§Æ® ÄÚµå´Â gcc¿¡ -c ¿É¼ÇÀ» ÀÌ¿ëÇØ¼ ¸¸µé¾î³¾ ¼ö ÀÖ´Ù. # gcc -c sum.c calc.cÀÌÁ¦ sum.o ¿Í calc.o ¶ó´Â ÆÄÀÏÀÌ ¸¸µé¾îÁø°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. È®ÀåÀÚ .o´Â ÀÌ ÆÄÀÏÀÌ ¿ÀºêÁ§Æ® ÆÄÀÏÀ̶ó´Â °ÍÀ» ¾Ë·ÁÁØ´Ù. ÀÌÁ¦ µÎ°³ÀÇ object ÆÄÀÏÀ» ¸µÅ©½ÃÄѼ ½ÇÇàÆÄÀÏÀ» ¸¸µé¸é µÈ´Ù. -o ¿É¼ÇÀ» ÀÌ¿ëÇϸé, ¸¸µé¾îÁø ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» ÇÕÃÄÁÙ ¼ö ÀÖ´Ù. # gcc -o calc sum.o calc.oÀÌÁ¦ ½ÇÇàÆÄÀÏÀÎ calc°¡ ¸¸µé¾îÁ³´Ù.
ÀÌ·¸°Ô ¸¸µé¾îÁø object ÆÄÀÏÀº ±â°è¾î·Î ¸¸µé¾îÁ® Àֱ⠶§¹®¿¡, ÀÌÈÄ¿¡ »ç¿ëÇÒ¶§´Â sum.c¸¦ ´Ù½Ã object ÆÄÀÏ·Î ÄÄÆÄÀÏÇÒ Çʿ䰡 ¾ø´Ù. ±×³É sum.o ÇÁ·Î±×·¥¿¡ ¸µÅ©½ÃÄÑÁֱ⸸ ÇÏ¸é µÈ´Ù. ´ÙÀ½°ú °°Àº ÇÁ·Î±×·¥À» ¸¸µé¾îº¸ÀÚ. ÇÁ·Î±×·¥ÀÇ À̸§Àº mycal.c·Î ÇÏÀÚ. #include "sum.h" #include <stdio.h> int main(int argc, char **argv) { int value; int a; int b; if (argc != 3) { printf("Usage : %s num1 num2\n", argv[0]); return 1; } a = atoi(argv[1]); b = atoi(argv[2]); value = sum(a, b); printf("%d + %d = %d\n", a, b, value); return 0; }ÀÌ ÇÁ·Î±×·¥Àº ù¹øÂ° ÇÁ·Î±×·¥º¸´Ù ´õ Áøº¸µÈ ÇÁ·Î±×·¥À¸·Î, ÇÁ·Î±×·¥ÀÇ ¸í·ÉÇà ÀÎÀÚ·Î ¹Þ¾ÆµéÀÎ ¼ýÀÚ¸¦ ´õÇÒ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ´Ù. atoi(3)´Â ¹®ÀÚ¿À» intÇü ¼ýÀÚ·Î º¯È¯ÇØÁÖ´Â ÇÔ¼ö´Ù. sum ÇÔ¼ö´Â ÀÌ¹Ì ÄÄÆÄÀÏ µÇ¾î¼ object ÆÄÀÏ·Î ¸¸µé¾îÁ® ÀÖÀ¸¹Ç·Î, º°µµ·Î ÄÄÆÄÀÏÇÒ Çʿ䰡 ¾ø´Ù. ´ÙÀ½°ú °°Àº¹æ¹ýÀ¸·Î ½ÇÇàÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Ù. # gcc -c mycal.c # gcc -o mycal sum.o mycal.o 4Ä¢¿¬»ê ÇÁ·Î±×·¥
À§ÀÇ ÇÁ·Î±×·¥Àº µ¡¼À¸¸À» Áö¿øÇϰí ÀÖ´Ù. ¿©±â¿¡ µ¡ºÙ¿© »¬¼À, ³ª´°¼À, °ö»ù±îÁö Áö¿øÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. °¢°¢ÀÇ ¿¬»êÀº ¸ðµÎ ÇÔ¼ö·Î ÀÛ¼ºµÇ¸ç, °¢°¢ÀÇ ÇÔ¼ö°¡ Çì´õÆÄÀϰú ÇÔ¼ö°¡ Á¤ÀÇµÈ C ÄÚµå ÆÄÀÏÀ» °¡Áö°Ô µÉ °ÍÀÌ´Ù. ±×·¸´Ù¸é, ÀÌ ÇÁ·Î±×·¥Àº 4Ä¢¿¬»êÀ» À§ÇÑ 4°³ÀÇ ÇÔ¼ö¿Í 4°³ÀÇ Çì´õÆÄÀÏ 1°³ÀÇ main ÇÔ¼ö¸¦ Æ÷ÇÔÇÏ´Â C ÆÄÀÏ·Î ±¸¼ºµÉ °ÍÀÌ´Ù.
sum.h int sum(int a, int b);
sub.h int sub(int a, int b);
mul.h int mul(int a, int b);
div.h int div(int a, int b);
ÀÌÁ¦ ÇÔ¼öÀÇ Á¤ÀǸ¦ ´ã°í ÀÖ´Â 4°³ÀÇ C ¼Ò½ºÄÚµå ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù.
sum.c int sum(int a, int b) { return a + b; }
sub.c int sub(int a, int b) { return a - b; }
mul.c int mul(int a, int b) { return a * b; }
div.c int div(int a, int b) { return a / b; }
ÀÌÁ¦ main ÇÔ¼ö¸¦ °¡Áø Äڵ带 ¸¸µé¸é µÈ´Ù. #include "sum.h" #include "sub.h" #include "mul.h" #include "div.h" #include <stdio.h> int main(int argc, char **argv) { int a = 1200, b=25; printf("sum : %d\n", sum(a, b)); printf("sub : %d\n", sub(a, b)); printf("mul : %d\n", mul(a, b)); printf("div : %d\n", div(a, b)); }
Äڵ带 ¸¸µé¾ú´Ù¸é, gcc¸¦ ÀÌ¿ëÇØ¼ object¸¦ ¸¸µé°í À̰͵éÀ» ¸µÅ©½ÃÄѼ ½ÇÇàÆÄÀÏ·Î ¸¸µé¸é µÈ´Ù. # gcc -c sum.c sub.c mul.c div.c simplecalc.c # gcc -o simplecalc sum.o sub.o mul.o div.o simplecalc.o ¶óÀ̺귯¸®
ÀÌ·¸°Ô ´ÜÀ§ ÇÔ¼ö¸¦ º°°³ÀÇ ¼Ò½ºÄÚµå¿Í Çì´õÆÄÀÏ·Î ³ª´©¾î¼ °ü¸®ÇÏ°Ô µÇ¸é, object ȤÀº ´ÜÀ§ ¼Ò½ºÄÚµå ÆÄÀÏÀ» ÀçȰ¿ëÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡À» °¡Áø´Ù. ±×·¯³ª ¿©ÀüÈ÷ ºÒÆíÇÑ Á¡ÀÌ ÀÖ´Ù. ÇÔ¼ö°¡ ¸¹¾ÆÁö¸é, ÀÚÄ© ¼ö½Ê°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏÀÌ »ý¼ºµÉ ¼ö ÀÖÀ»°Çµ¥, À̵éÀ» °ü¸®ÇÏ´Â°Ç ¸Å¿ì ±ÍÂúÀº ÀÏÀ̱⠶§¹®ÀÌ´Ù.
±×·¸´Ù¸é 4°³ÀÇ object ÆÄÀÏÀ» Çϳª·Î ¹À» ¼ö¸¸ ÀÖ´Ù¸é, ÇÔ¼öµéÀ» ´õ Æí¸®ÇÏ°Ô °ü¸®ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ·¸°Ô ¿ÀºêÁ§Æ®µéÀ» ÇϳªÀÇ ÆÄÀÏ·Î ´Ù½Ã ¹Àº °ÍÀ» ¶óÀ̺귯¸®(library)¶ó°í ÇÑ´Ù.
¶óÀ̺귯¸®´Â ´Ù½Ã Á¤Àû ¶óÀ̺귯¸®¿Í °øÀ¯ ¶óÀ̺귯¸®·Î ³ª´¶´Ù. Á¤Àû¶óÀ̺귯¸®´Â ½ÇÇàÆÄÀÏ¿¡ ¿ÏÀüÈ÷ Æ÷ÇԵǾî¹ö¸®´Â Çü½ÄÀÇ ¶óÀ̺귯¸®¸¦ ¸»ÇÑ´Ù. ¹Ý¸é °øÀ¯ ¶óÀ̺귯¸®´Â ½ÇÇàÆÄÀÏ¿¡ Æ÷ÇÔµÇÁö ¾Ê°í, ½ÇÇàµÉ¶§ ÇØ´ç ¶óÀ̺귯¸®¸¦ ºÒ·¯¿À´Â Çü½ÄÀÇ ¶óÀ̺귯¸®¸¦ ¸»ÇÑ´Ù. Á¤Àû¶óÀ̺귯¸®
static library¶ó°í ºÎ¸£±âµµ ÇÑ´Ù. ÀÌ ¶óÀ̺귯¸®´Â ´Ü¼øÇÑ ¿ÀºêÁ§Æ®ÀÇ ¸ðÀ½ÀÏ »ÓÀÌ´Ù. Á¤Àû¶óÀ̺귯¸®´Â arÀ̶ó´Â ÇÁ·Î±×·¥À» ÅëÇØ¼ ¸¸µé ¼ö ÀÖ´Ù. ±×·³ arÀ» ÀÌ¿ëÇØ¼ À§ÀÇ »çÄ¢¿¬»êÀ» À§ÇÑ 4°³ÀÇ ¿ÀºêÁ§Æ®¸¦ ¸ð¾Æ¼ libmycalc.a¶ó´Â À̸§ÀÇ Á¤Àû¶óÀ̺귯¸®¸¦ »ý¼ºÇغ¸µµ·Ï ÇÏÀÚ. rc ¿É¼ÇÀ» ÀÌ¿ëÇϸé, Á¤Àû¶óÀ̺귯¸®¸¦ ¸¸µé ¼ö ÀÖ´Ù.
rÀº Á¤Àû¶óÀ̺귯¸®¸¦ ¸¸µé°Ú´Ù´Â ¿É¼ÇÀ̰í, c´Â »õ·Î »ý¼ºÀ» Çϰڴٴ ¿É¼ÇÀÌ´Ù. # ar rc libmycalc.a sum.o sub.o mul.o div.olibmycalc.a ¶ó´Â ÆÄÀÏÀÌ »ý¼ºµÈ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. t ¿É¼ÇÀ» ÀÌ¿ëÇϸé, ÇØ´ç ¶óÀ̺귯¸®°¡ ¾î¶² ¿ÀºêÁ§Æ®¸¦ Æ÷ÇÔÇϰí ÀÖ´ÂÁöµµ È®ÀÎÇÒ ¼ö ÀÖ´Ù. t ¿É¼ÇÀ» »ç¿ëÇÏ¸é µÈ´Ù. Âü°í·Î Á¤Àû ¶óÀ̺귯¸®ÀÇ À̸§Àº libNAME.aÀÇ Çü½ÄÀ» µû¶ó¾ß ÇÑ´Ù. # ar t libmycalc.a div.o mul.o sum.o sub.o
±×·³ Á¤Àû¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇØ¼ ½ÇÇàÆÄÀÏÀ» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ÀÌÀü¿¡´Â 4°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ¸ðµÎ ¸µÅ©½ÃÄÑÁà¾ß ÇßÁö¸¸, ÀÌÁ¦´Â libmycalc.a ¸¸ ¸µÅ©½ÃÄÑÁÖ¸é µÈ´Ù.
¶óÀ̺귯¸®ÀÇ ¸µÅ©¹æ½ÄÀº ¿ÀºêÁ§Æ®¸¦ ¸µÅ©ÇÏ´Â °Í°ú´Â ¾à°£ Â÷À̰¡ ÀÖ´Ù. libraryÀÇ À§Ä¡¸¦ ¸íÈ®È÷ ¸í½ÃÇØ ÁÖ¾î¾ß ÇÑ´Ù. -L ¿É¼ÇÀ» ÀÌ¿ëÇØ¼ ¶óÀ̺귯¸®°¡ ÀÖ´Â µð·ºÅ丮ÀÇ À§Ä¡¸¦ ¸í½ÃÇØÁÖ°í, -l¿É¼ÇÀ» ÀÌ¿ëÇØ¼, ¶óÀ̺귯¸® ÆÄÀÏÀÇ À̸§À» Á¤ÇØÁà¾ß ÇÑ´Ù. ´ÙÀ½Àº simplecalc.c ¸¦ Á¤Àû¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇØ¼ ÄÄÆÄÀÏÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù. # gcc -o simplecalc simplecalc.c -L./ -lmycalc-L./Àº ÇöÀç µð·ºÅ丮¸¦ ¶óÀ̺귯¸® ã±â µð·ºÅ丮·Î Çϰڴٴ Àǹ̰¡ µÈ´Ù. -l ¿É¼ÇµÚ¿¡ ºÙÀÌ´Â ¶óÀ̺귯¸® ÆÄÀÏÀÇ À̸§¿¡ ÁÖ¸ñÇÒ Çʿ䰡 ÀÖ´Ù. ¶óÀ̺귯¸® À̸§Àº lib¿Í .a¸¦ Á¦¿ÜÇÑ À̸§À» »ç¿ëÇÑ´Ù. °øÀ¯ ¶óÀ̺귯¸®
°øÀ¯ ¶óÀ̺귯¸®´Â ÇÔ²² »ç¿ëÇÏ´Â ¶óÀ̺귯¸®¶ó´Â Àǹ̴Ù. Áï Á¤Àû ¶óÀ̺귯¸® ó·³ ½ÇÇàÆÄÀÏ¿¡ ºÙ´Â °ÍÀÌ ¾Æ´Ï°í, ½Ã½ºÅÛÀÇ Æ¯Á¤µð·ºÅ丮¿¡ À§Ä¡Çϸé¼, ´Ù¸¥ ¸ðµç ÇÁ·Î±×·¥µéÀÌ °øÀ¯Çؼ »ç¿ëÇÒ ¼ö ÀÖ°Ô²û Á¦ÀÛµÈ ¶óÀ̺귯¸®´Ù. ±×·¯¹Ç·Î °øÀ¯ ¶óÀ̺귯¸®¸¦ »ç¿ëÇϵµ·Ï Á¦ÀÛµÈ ÇÁ·Î±×·¥Àº ½ÇÇà½Ã¿¡ »ç¿ëÇÒ ¶óÀ̺귯¸®¸¦ È£ÃâÇÏ´Â °úÁ¤À» °ÅÄ¡°Ô µÈ´Ù.
°øÀ¯ ¶óÀ̺귯¸®¿ª½Ã ¿ÀºêÁ§Æ®¸¦ ÀÌ¿ëÇØ¼ ¸¸µç´Ù´Â Á¡¿¡¼´Â Á¤Àû¶óÀ̺귯¸®¿Í ºñ½ÁÇÏÁö¸¸, È£Ãâ½Ã¿¡ ¸µÅ©Çϱâ À§ÇÑ ºÎ°¡ÀûÀÎ Á¤º¸¸¦ ÇÊ¿ä·Î ÇϹǷÎ, Á¤Àû¶óÀ̺귯¸®¿Í´Â ÀüÇô ´Ù¸¥ ÇüÅ·Π¸¸µé¾î Áø´Ù. Á¤Àû¶óÀ̺귯¸®¿Í À̸§ÀÌ Çê°¥¸± ¼ö ÀÖÀ¸´Ï, ¶óÀ̺귯¸® À̸§Àº mycalcso ·Î ÇϰڴÙ. # gcc -fPIC -c sum.c sub.c mul.c div.c # gcc -shared -W1,-soname,libmycalcso.so.1 -o libmycalcso.so.1.0.1 sum.o sub.o mul.o div.o
# ln -s libmycalcso.so.1.0.1 libmycalcso.soÀÌ·¸°Ô ¸µÅ©¸¦ ¸¸µé°Ô µÇ¸é, ¿©·¯°¡Áö ¹öÀüÀÇ ¶óÀ̺귯¸® ÆÄÀÏÀ» ÀÌ¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î °ü¸®»ó ÀÕÁ¡À» °¡Áú ¼ö ÀÖ´Ù. »õ·Î¿î ¹öÀüÀÇ ¶óÀ̺귯¸®°¡ ³ª¿Ã °æ¿ì, ¿À·¡µÈ ¹öÀüÀÇ ¶óÀ̺귯¸®¸¦ ¾²´Â ÇÁ·Î±×·¥Àº ½ÇÇà½Ã ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö Àִµ¥, ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
ÀÌÁ¦ ¸µÅ©ÇÏ´Â °úÁ¤ÀÌ ³²¾Ò´Ù. ¸µÅ©°úÁ¤Àº Á¤Àû ¶óÀ̺귯¸®¸¦ »ç¿ëÇÒ¶§¿Í µ¿ÀÏÇÏ´Ù. # gcc -o simplecalcso simplecalc.c -L./ -lmycalcso
ÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. ¾Æ¸¶ ´ÙÀ½°ú °°Àº ¿¡·¯¸Þ½ÃÁö¸¦ ¸¸³ª°Ô µÉ °ÍÀÌ´Ù. # ./simplecalcso ./simplecalcso: error while loading shared libraries: libmycalc.so: cannot open shared object file: No such file or directory
ÀÌ·¯ÇÑ ¿¡·¯°¡ ¹ß»ýÇÏ´Â ¿øÀο¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. Á¤Àû¶óÀ̺귯¸®´Â ½ÇÇàÆÄÀÏ¿¡ ¶óÀ̺귯¸®°¡ ºÙ¿©Áö¹Ç·Î, ÀÏ´Ü ½ÇÇàÆÄÀÏÀÌ ¸¸µé¾îÁö¸é, µ¶ÀÚÀûÀ¸·Î ½ÇÇàÀÌ °¡´ÉÇÏ´Ù. ±×·¯³ª °øÀ¯¶óÀ̺귯¸®´Â ¶óÀ̺귯¸®°¡ ºÙ¿©Áö´Â ¹æ½ÄÀÌ ¾Æ´Ï°í, ¶óÀ̺귯¸®¸¦ È£ÃâÇØ¼ ÇØ´ç ÇÔ¼öÄڵ带 ½ÇÇàÇÏ´Â ¹æ½ÄÀÌ´Ù. ±×·¯¹Ç·Î °øÀ¯¶óÀ̺귯¸® Çü½ÄÀ¸·Î ÀÛ¼ºµÈ ÇÁ·Î±×·¥ÀÇ °æ¿ì È£ÃâÇÒ ¶óÀ̺귯¸®ÀÇ À§Ä¡¸¦ ¾Ë°í ÀÖ¾î¾ß¸¸ ÇÑ´Ù.
À§ÀÇ simplecalcso ÇÁ·Î±×·¥À» ½ÇÇà½Ã۸é, ÀÌ ÇÁ·Î±×·¥Àº libmycal.so ÆÄÀÏÀ» ãÀ» °ÍÀÌ´Ù. À̶§ ÆÄÀÏÀ» ã´Â µð·ºÅ丮´Â /etc/ld.so.conf¿¡ Á¤ÀÇ µÇ¾î ÀÖ´Ù. # cat /etc/ld.so.conf /usr/lib /usr/local/lib¸¸¾à À§¿¡¼ 󷳵Ǿî ÀÖ´Ù¸é, ÇÁ·Î±×·¥Àº /usr/lib ¿Í /usr/local/lib ¹Ø¿¡¼ libmycal.so ¸¦ ã°Ô µÉ °ÍÀÌ´Ù. ±×·±µ¥ libmycal.so °¡ ¾øÀ¸´Ï, À§¿¡¼¿Í °°Àº ¿¡·¯°¡ ¹ß»ýÇÏ´Â °ÍÀÌ´Ù.
°¡Àå °£´ÜÇÑ ¹æ¹ýÀº ¶óÀ̺귯¸® ÆÄÀÏÀ» ld.so.conf¿¡ µî·ÏµÈ µð·ºÅ丮Áß Çϳª·Î º¹»çÇÏ´Â ¹æ¹ýÀÌ µÉ °ÍÀÌ´Ù. ȤÀº ȯ°æº¯¼ö¸¦ ÀÌ¿ëÇØ¼, »õ·Î¿î ¶óÀ̺귯¸® ã±â °æ·Î¸¦ Ãß°¡ÇÒ ¼öµµ ÀÖ´Ù. À̶§ »ç¿ëµÇ´Â ȯ°æº¯¼ö´Â LD_LIBRARY_PATH ´Ù. # export LD_LIBRARY_PATH=./:/home/myhome/libÀÌÁ¦ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۸é LD_LIBRARY_PATH ¿¡ µî·ÏµÈ µð·ºÅ丮¿¡¼ ¸ÕÀú °Ë»öÇÏ°Ô µÇ°í, ÇÁ·Î±×·¥Àº ¹«»çÈ÷ ½ÇÇà µÉ °ÍÀÌ´Ù. °øÀ¯¶óÀ̺귯¸®¿Í Á¤Àû¶óÀ̺귯¸®ÀÇ Àå´ÜÁ¡
À̵é 2°¡Áö ¶óÀ̺귯¸®ÀÇ Àå´ÜÁ¡¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. Àå´ÜÁ¡À» ¾Ë°ÔµÇ¸é ¾î¶² »óȲ¿¡¼ ÀÌµé ¶óÀ̺귯¸®¸¦ ¼±ÅÃÇÒ ¼ö ÀÖÀ»Áö ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù.
Á¤Àû¶óÀ̺귯¸®ÀÇ ÀåÁ¡Àº °£´ÜÇÑ ¹èÆ÷¹æ½Ä¿¡ ÀÖ´Ù. ¶óÀ̺귯¸®ÀÇ Äڵ尡 ½ÇÇàÄڵ忡 Á÷Á¢ ºÙ¾î¹ö¸®´Â Çü½ÄÀ̱⠶§¹®¿¡, ÀÏ´Ü ½ÇÇàÆÄÀÏÀÌ ¸¸µé¾îÁö¸é °£´ÜÇÏ°Ô º¹»çÇÏ´Â Á¤µµ·Î ´Ù¸¥ ÄÄÇ»ÅÍ ½Ã½ºÅÛ¿¡¼ ½ÇÇà½Ãų ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¹Ý¸é µ¿Àû¶óÀ̺귯¸®´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§ È£ÃâÇÏ´Â ¹æ½ÄÀ̹ǷÎ, ¶óÀ̺귯¸®±îÁö ÇÔ²² ¹èÆ÷ÇØ¾ß ÇÑ´Ù. ¶óÀ̺귯¸®ÀÇ È£Ãâ °æ·ÎµîÀÇ È¯°æº¯¼ö±îÁö ´ýÀ¸·Î ½Å°æ½áÁà¾ß ÇÏ´Â ±ÍÂúÀ½ÀÌ µû¸¥´Ù.
ÀϹÝÀûÀ¸·Î Á¤Àû¶óÀ̺귯¸®´Â µ¿Àû¶óÀ̺귯¸®¿¡ ºñÇØ¼ ½ÇÇà¼Óµµ°¡ ºü¸£´Ù. µ¿Àû¶óÀ̺귯¸® ¹æ½ÄÀÇ ÇÁ·Î±×·¥Àº ¶óÀ̺귯¸®¸¦ È£ÃâÇÏ´Â ºÎ°¡ÀûÀÎ °úÁ¤ÀÌ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù.
Á¤Àû¶óÀ̺귯¸®´Â ½ÇÇàÆÄÀÏ Å©±â°¡ Ä¿Áø´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÇØºÁ¾ß ¾ó¸¶³ª µÇ°Ú´À³Ä ½Í°ÚÁö¸¸, ÇØ´ç ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ ¸¹À¸¸é ¸¹À» ¼ö·Ï X ÇÁ·Î±×·¥¼ö¸¸Å µð½ºÅ© ¿ë·®À» Â÷ÁöÇÏ°Ô µÈ´Ù. ¹Ý¸é °øÀ¯¶óÀ̺귯¸®¸¦ »ç¿ëÇÒ °æ¿ì, ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ 10°³°Ç 100°³°Ç °£¿¡, ÇϳªÀÇ ¶óÀ̺귯¸® º¹»çº»¸¸ ÀÖÀ¸¸é µÇ±â ¶§¹®¿¡, ±×¸¸Å ½Ã½ºÅÛÀÚ¿øÀ» ¾Æ³¢°Ô µÈ´Ù.
¸¶Áö¸·À¸·Î ¹öÀü °ü¸®¿Í °ü·ÃµÈ Àå´ÜÁ¡ÀÌ ÀÖ´Ù. ¼ÒÇÁÆ®¿þ¾î °³¹ß ¼¼°èÀÇ ºÒ¹®À²À̶ó¸é ¹ö±× ¾ø´Â ÇÁ·Î±×·¥Àº ¾ø´ÙÀÌ´Ù. ¾î¶°ÇÑ ÇÁ·Î±×·¥ÀÌ¶óµµ Å©°íÀÛÀº ¹ö±×°¡ ÀÖÀ» ¼ö ÀÖÀ¸¸ç, ¶óÀ̺귯¸®µµ ¿¹¿Ü°¡ ¾Æ´Ï´Ù.
¿©±â »ê¼ú°è»êÀ» À§ÇÑ ¶óÀ̺귯¸®°¡ ÀÖ´Ù. ±×¸®°í Á¤Àû ¶óÀ̺귯¸® ÇüÅ·ΠÇÁ·Î±×·¥¿¡ ¸µÅ©µÇ¾ú¾î¼ »ç¿ëµÇ°í ÀÖ´Ù°í °¡Á¤Çغ¸ÀÚ. ±×·±µ¥ »ê¼ú°è»ê ¶óÀ̺귯¸®¿¡ ½É°¢ÇÑ ¹ö±×°¡ ¹ß°ßµÇ¾ú´Ù. ÀÌ °æ¿ì »ê¼ú°è»ê ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇÑ A ÇÁ·Î±×·¥À» ¿ÏÀüÈ÷ »õ·Î ÄÄÆÄÀÏ ÇØ¼ ¹èÆ÷ÇØ¾ß¸¸ÇÑ´Ù. ¹®Á¦´Â ÀÌ ¶óÀ̺귯¸®°¡ A »Ó¸¸ ¾Æ´Ï¶ó B, C, D µîÀÇ ÇÁ·Î±×·¥¿¡ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. °á±¹ B, C, D ÇÁ·Î±×·¥ ¸ðµÎ¸¦ »õ·Î ÄÄÆÄÀÏ ÇØ¼ ¹èÆ÷ÇØ¾ß ÇÏ°Ô µÈ´Ù. ´õ Å« ¹®Á¦´Â ¾î¶² ÇÁ·Î±×·¥ÀÌ ¹ö±×°¡ ÀÖ´Â »ê¼ú°è»ê ¶óÀ̺귯¸®¸¦ Æ÷ÇÔÇϰí ÀÖ´ÂÁö ¾Ë¾Æ³»±â°¡ Èûµé´Ù´Â Á¡ÀÌ´Ù.
°øÀ¯¶óÀ̺귯¸® ÇüÅ·ΠÀÛ¼ºÇÏ°Ô µÉ°æ¿ì¿¡´Â ¶óÀ̺귯¸®¸¸ »õ·Î ÄÄÆÄÀÏ ÇÑ´ÙÀ½ ¹Ù²ãÁÖ¸éµÈ´Ù. ±×·¯¸é ÇØ´ç ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¥ÀÌ ¸î°³ÀÌ´ø°£¿¡ ±ò²ûÇÏ°Ô ¹®Á¦°¡ ÇØ°áµÈ´Ù.
½ÇÁ¦ ÀÌ·± ¹®Á¦°¡ ¹ß»ýÇÑ ÀûÀÌ ÀÖ¾ú´Ù. zlib ¶óÀ̺귯¸®´Â ¾ÐÃàÀ» À§ÇÑ ¶óÀ̺귯¸®·Î ºê¶ó¿ìÀú, À¥¼¹ö, ¾ÐÃà°ü¸® ÇÁ·Î±×·¥µî¿¡ ³Î¸® »ç¿ëµÈ´Ù. ¸¹Àº ÇÁ·Î±×·¥µéÀÌ ÀÌ zlib¸¦ Á¤Àû¶óÀ̺귯¸® ÇüÅ·ΠÆ÷ÇÔÇØ¼ ¹èÆ÷°¡ µÇ¾ú´Âµ¥, ½É°¢ÇÑ º¸¾È¹®Á¦°¡ ¹ß°ßµÇ¾ú´Ù. °á±¹ zlib¸¦ Æ÷ÇÔÇÑ ¸ðµç ÇÁ·Î±×·¥À» »õ·Î ÄÄÆÄÀÏÇØ¼ Àç ¼³Ä¡ÇØ¾ß ÇÏ´Â ¹ø°Å·Î¿î °úÁ¤À» °ÅÄ¡°Ô µÇ¾ú´Ù. °øÀ¯¶óÀ̺귯¸®¿´´Ù¸é ¹®Á¦°¡ ¾øÀ» °ÍÀÌ´Ù.
ÀÌ»ó Á¤Àû¶óÀ̺귯¸®¿Í °øÀ¯¶óÀ̺귯¸®¸¦ ºñ±³ ¼³¸íÇß´Ù. ±×·¸´Ù¸é ¼±ÅÃÀÇ ¹®Á¦°¡ ¹ß»ýÇÒ °ÍÀε¥, ÀÚ½ÅÀÇ ÄÄÇ»Åͳª ÇÑÁ¤µÈ ¿µ¿ª¿¡¼ »ç¿ëÇÒ ÇÁ·Î±×·¥À» Á¦ÀÛÇÏÁö ¾Ê´ÂÇÑÀº °øÀ¯¶óÀ̺귯¸® ÇüÅ·ΠÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ±æ ¹Ù¶õ´Ù. ƯÈ÷ ÀÎÅͳÝÀ» ÅëÇØ¼ ¹èÆ÷ÇÒ ¸ñÀûÀ¸·Î ÀÛ¼ºÇÒ ÇÁ·Î±×·¥À̶ó¸é, °øÀ¯¶óÀ̺귯¸® ÇüÅ·ΠÀÛ¼ºÇÏ´Â°Ô Á¤½Å°Ç°ÇÐÀûÀ¸·Î³ª ÇÁ·Î±×·¡¹Ö À¯ÁöÂ÷¿ø¿¡¼³ª ÁÁÀ» °ÍÀÌ´Ù.
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|