8Àå. ¶óÀ̺귯¸® ÀÌ¿ëÇϱâ
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¶óÀ̺귯¸®¸¦ ÅëÇÑ ÇÔ¼ö °øÀ¯

8. ¶óÀ̺귯¸®¸¦ ÅëÇÑ ÇÔ¼ö °øÀ¯

Áö±Ý±îÁöÀÇ ³»¿ëÀ» ÅëÇÏ¿© ´Ü¼øÈ÷ »çÄ¢¿¬»êÀ» ÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥ Á¶Â÷µµ, ÄÄÇ»Å͸¦ ÅëÇØ¼­ ±¸Çö½Ãų·Á¸é »ó´çÈ÷ ¸¹Àº ÀÏÀ» ÇØ¾ßÇÑ´Ù´Â °ÍÀ» ´À²¼À» °ÍÀÌ´Ù. °Ô´Ù°¡ ¿ì¸®°¡ ¾ÕÀ¸·Î ¸¸µé¾î¾ß ÇÒ ÇÁ·Î±×·¥µéÀº Áö±Ý±îÁö ¸¸µé¾î¿Ô´ø (°£´ÜÇÑ)ÇÁ·Î±×·¥µé º¸´Ù ÈξÀ º¹ÀâÇÒ È®·üÀÌ ¸¹´Ù. ±×·¯¹Ç·Î °¡´ÉÇÑÇÑ ÇÁ·Î±×·¥À» ½±°Ô ¸¸µé ¼ö ÀÖ´Â ¾î¶² ÇÁ·Î¼¼½ºÀÇ Á¤¸³ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ¿©±â¿¡´Â ´ÙÀ½°ú °°Àº ¸î°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.

  • ¾î¼Àºí¸® ´ë½Å °í±Þ¾ð¾î¸¦ ÀÌ¿ëÇØ¼­ Äڵ带 ÀÛ¼ºÇÑ´Ù.

  • ÇÁ·Î±×·¥À» ¸¸µé±â Àü¿¡ ¿©·¯°³ÀÇ (°£´ÜÇÑ) Äڵ带 ¸¸µé°í, ÀÌ°É Á¶ÇÕÇØ¼­(°¡Á®´Ù ºÙÀ̱â·Î) ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù.

  • ÇÁ·Î±×·¥µé »çÀÌ¿¡ °øÅëÀûÀ¸·Î »ç¿ëÇÏ´Â ÇÔ¼öÀÇ ¸ðÀ½À» µû·Î °ü¸®Çؼ­ °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

À§ÀÇ ¹æ¹ýµéÀº ¸ðµÎ ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÔ¿¡ À־ ½ÇÁúÀûÀ¸·Î ÇÊ¿äÇÑ °ÍµéÀÌ´Ù. ù¹øÂ° ¹æ¹ýÀÎ °í±Þ¾ð¾î¸¦ ÀÌ¿ëÇÏ´Â °Í¿¡ ´ëÇØ¼­´Â 11Àå¿¡¼­ ´Ù·çµµ·Ï ÇϰڴÙ. µÎ¹øÂ° ¹æ¹ýÀº À¯¿ëÇÑ ¹æ¹ýÀ̱ä ÇÏÁö¸¸ ´ÙÀ½°ú °°Àº ¹®Á¦Á¡µéÀ» °¡Áø´Ù.

  • º¹»çµÈ ÄÚµå´Â ½ÇÁ¦ Äڵ忡¼­ Á¾Á¾ Å©°Ô ¼öÁ¤µÇ°ï ÇÑ´Ù.

  • º¸Åë º¹»çµÇ´Â ÄÚµå´Â ÇÁ·Î±×·¥¿¡ ¿©·¯¹ø Æ÷ÇÔÀÌ µÈ´Ù. À̰ÍÀº ³¶ºñ¸¦ ÃÊ·¡ÇÒ »Ó ¾Æ´Ï¶ó, ÄÚµåÀÇ ¼öÁ¤À» ¾î·Æ°Ô ¸¸µç´Ù.

  • ¸¸¾à º¹»çµÈ Äڵ忡¼­ ¹®Á¦°¡ ¹ß»ýÇß´Ù¸é ÀÌ Äڵ带 »ç¿ëÇÏ´Â ¸ðµç ÀÀ¿ëÀÇ Äڵ带 ¼öÁ¤Çؼ­ ´Ù½Ã ¹èÆ÷ÇØ¾ß¸¸ ÇÑ´Ù.

±×·¯¹Ç·Î µÎ¹øÂ° ¹æ¹ýÀº ²À ÇÊ¿äÇÑ ºÎºÐ¿¡¼­¸¸ »ç¿ëÇϵµ·Ï ÇÑ´Ù. ¼¼¹øÂ° ¹æ¹ýÀº °¡Àå ÀÚÁÖ ÀÌ¿ëÇÑ´Ù. À̰ÍÀº °øÅëÀ¸·Î »ç¿ëµÇ´Â Äڵ带 ÀçÀÛ¼º ÇÏÁö ¾Ê°í ÀÌ¹Ì ÀúÀåµÇ¾î ÀÖ´Â Äڵ带 Àоî¿À´Â ¹æ½ÄÀ» ÃëÇÑ´Ù - Á¤È®ÇϰԴ ȣÃâµÈ ÇÔ¼öÀÇ À§Ä¡¸¦ °¡Á®¿Í¼­ ½ÇÇàÇÑ´Ù -. À̰ÍÀº µ¿ÀÏÇÑ ÇÔ¼ö¸¦ º¹»çÇØ¼­ »ç¿ëÇØ¾ß ÇÏ´Â ³¶ºñ¸¦ ¾ø¾ÖÁØ´Ù. ¶ÇÇÑ Äڵ忡 ¹ö±×°¡ ¹ß»ýÇßÀ» °æ¿ì¿¡µµ ÀÏÀÏÀÌ ÇÁ·Î±×·¥À» ¼öÁ¤ÇÒ ÇÊ¿ä ¾øÀÌ °øÅëÀ¸·Î È£ÃâÇÏ´Â ÇÔ¼ö¸¸ ¼öÁ¤ÇÏ¸é µÇ±â ¶§¹®¿¡ ¹ö±×µµ ½±°Ô °ü¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¹°·Ð ÀÌ ¹æ¹ýµµ ¸î°¡Áö ¹®Á¦¸¦ °¡Áö°í ÀÖ´Ù.

  • ¸¸¾à ¿©·¯°³ÀÇ ÇÁ·Î±×·¥ÀÌ ÇÔ¼öÆÄÀÏ(¶óÀ̺귯¸®)¸¦ °øÀ¯Çϰí ÀÖÀ» ¶§, °ú¿¬ ÀÌ ÇÔ¼öÆÄÀÏÀ» Áö¿öµµ ±¦ÂúÀ»Áö ¾î¶»°Ô ÆÇ´ÜÇÒ ¼ö ÀÖÀ» ±î ? ´õÀÌ»ó ÇÊ¿ä ¾ø´Ù°í ÆÇ´ÜÇØ¼­ Áö¿ü´Âµ¥, ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ À̸¦ »ç¿ëÇϰí À־ ±× ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇÁö ¾Ê´Â °æ¿ì¸¦ ¿¹»óÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.

  • Some programs inadvertantly rely on bugs within shared functions. Therefore, if upgrading the shared program fixes a bug that a program depended on, it could cause that application to cease functioning.

ÀÌ·¯ÇÑ ¹®Á¦¸¦ "DLL hell"À̶ó°í ºÎ¸¥´Ù. ±×·¸Áö¸¸ ÀÌ·¯ÇÑ ´ÜÁ¡º¸´Ù´Â ¾ò´Â À̵æÀÌ ÈξÀ Å©±â ¶§¹®¿¡ ÀÌ ¹æ¹ýÀ» ÁÖ·Î »ç¿ëÇÑ´Ù.

ÇÁ·Î±×·¡¹Ö¿¡¼­ ÀÌ·¯ÇÑ °øÀ¯µÇ´Â ÄÚµå ÆÄÀÏÀ» shared libraries, shared objects, dynamic-link libraries, DLLs ȤÀº .so ÆÄÀÏ À̶ó°í ÇÑ´Ù. ¿©±â¿¡¼­´Â °øÀ¯¶óÀ̺귯¸®(shared libraries)¶ó°í ºÎ¸£µµ·Ï ÇϰڴÙ.

8.1. °øÀ¯ ¶óÀ̺귯¸®ÀÇ ÀÌ¿ë

°øÀ¯¶óÀ̺귯¸®¸¦ Å×½ºÆ® Çϱâ À§Çؼ­ °£´ÜÇÑ ¿¹¸¦ µé¾îº¸µµ·Ï ÇϰڴÙ. ÀÌ ÇÁ·Î±×·¥Àº È­¸é¿¡ hello world¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À¸·Î À̸§Àº helloworld-nolib.s·Î ÇϰڴÙ.

.include "linux.s"
.section .data

helloworld:
    .ascii "hello world\n"
helloworld_end:

    .equ helloworld_len, helloworld_end - helloworld

    .section .text
    .globl _start

_start:
    movl  $STDOUT, %ebx
    movl  $helloworld, %ecx
    movl  $helloworld_len, %edx
    movl  $SYS_WRITE, %eax
    int   $LINUX_SYSCALL

    movl  $0, %ebx
    movl  $SYS_EXIT, %eax
    int   $LINUX_SYSCALL
			
°£´ÜÇÑ ÄÚµåÀÓÀ¸·Î ¼³¸íÀº »ý·«ÇϰڴÙ. ´ÙÀ½Àº À§ ÇÁ·Î±×·¥ÀÇ °øÀ¯¶óÀ̺귯¸® È£Ãâ ¹öÁ¯À¸·Î À̸§Àº helloworld-lib.sÀÌ´Ù.
.section .data

helloworld:
    .ascii "hello world\n\0"

    .section .text
    .globl _start

_start:
    pushl $helloworld
    call printf

    pushl $0
    call exit
			
°øÀ¯ ¶óÀ̺귯¸® È£Ãâ ¹öÁ¯Àº Äڵ尡 ´õ¿í ´Ü¼øÇØ Á³´Ù. ÀÌÀ¯´Â °£´ÜÇÏ´Ù. Ãâ·Â°ú °ü·ÃµÈÀÏÀ» ½Ã½ºÅÛ È£ÃâÀ» ÅëÇÏ¿© Á÷Á¢ ÄÚµùÇÏÁö ¾Ê°í, ¶óÀ̺귯¸®¿¡¼­ Á¦°øÇÏ´Â printfÇÔ¼ö¸¦ »ç¿ëÇ߱⠶§¹®ÀÌ´Ù. ù¹øÂ° ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏ ÇØ¼­ ½ÇÇà½ÃŰ¸é µÈ´Ù.
# as helloworld-nolib.s -o helloworld-nolib.o
# ld helloworld-nolib.o -o helloworld-nolib
			
±×·¯³ª µÎ¹øÂ° ÇÁ·Î±×·¥ÀÇ °æ¿ì printf¸¦ ¾î¶² °øÀ¯ ¶óÀ̺귯¸®¿¡¼­ È£ÃâÇϵµ·Ï Çß´ÂÁö ¸µÅ©°úÁ¤¿¡¼­ ¾Ë·ÁÁÙ Çʿ䰡 ÀÖ´Ù.
# as helloworld-lib.s -o helloworld-lib.o
# ld -dynamic-linker /lib/ld-linux.so.2 -o helloworld-lib helloworld-lib.o -lc
			
°øÀ¯ ¶óÀ̺귯¸®¸¦ ¸µÅ© ½Ã۱â À§Çؼ­ -dynamic-linker ¿É¼ÇÀ» »ç¿ëÇϰí ÀÖ´Ù. ¸®´ª½º »ó¿¡¼­ °øÀ¯ ¶óÀ̺귯¸® ¸µÅ©¸¦ À§Çؼ­´Â Ç×»ó -dynamic-linker /lib/ld-linux.so.2ÀÌ ÇÁȨµÇ¾î¾ß ÇÑ´Ù. À̰ÍÀº ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÉ¶§ ¿î¿µÃ¼Á¦·Î ºÎÅÍ /lib/ld-linux.so.2¸¦ ÀÌ¿ëÇØ¼­ ¿ÜºÎ ¶óÀ̺귯¸®¸¦ ¸µÅ© ½Ãų ¼ö ÀÖµµ·Ï ¸¸µé¾î ÁØ´Ù.

-lc ´Â c ¶óÀ̺귯¸®¸¦ ¸µÅ©½ÃÄѶõ ¶æÀÌ´Ù. c¶óÀ̺귯¸®´Â GNU/LinuxÀÇ °æ¿ì libc.so¶ó´Â À̸§À» °¡Áö°í ÀÖ´Ù. ¿©±â¿¡¼­ óÀ½ÀÇ lib¿Í ¸¶Áö¸·ÀÇ .so¸¦ Á¦°Å½ÃŲ À̸§À» -lµÚ¿¡ ºÙ¿©ÁÜÀ¸·Î½á ÇÊ¿äÇÑ ¶óÀ̺귯¸®¸¦ ¸µÅ©½ÃŰ°Ô µÈ´Ù. libc¿¡´Â printf(3)¿Í exit(3)¸¦ ºñ·ÔÇÑ ´Ù¾çÇÑ ÇÔ¼ö¸¦ °¡Áö°í ÀÖ´Ù.

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.