Korea FreeBSD Users Group
Korea FreeBSD Users Group News, Internal, Projects, Home
Software, Support, Documentation

(Answer) (Category) FreeBSD ºñ°ø½Ä Çѱ¹¾î FAQ : (Category) Trash :
°øÀ¯ ¶óÀ̺귯¸®¸¦ ¾î¶»°Ô ¸¸µéÁÒ?
A: ´ÙÀ½ ¿¹¸¦ º¸¾Æ ÁֽʽÿÀ.

¸ÕÀú °°Àº µð·ºÅ丮¿¡ shared.c, test_shared.c¸¦ ¾Æ·¡¿Í °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.

shared.cÀÇ ³»¿ë
-----------------------¿©±â¼­ºÎÅÍ----------------------
int
shared(int a)
{
    a *= 5;
    return(a);
}
------------------------¿©±â±îÁö-----------------------

test_shared.cÀÇ ³»¿ë
-----------------------¿©±â¼­ºÎÅÍ----------------------
#include <stdio.h>

extern int shared(int);

int
main(void)
{
    int a;

    printf("number ?:");
    scanf("%d", &a);
    printf("result: %d\n", shared(a);
    return(0);
}
------------------------¿©±â±îÁö-----------------------


¸ÕÀú °øÀ¯ ¶óÀ̺귯¸®¸¦ ±¸¼ºÇÏ´Â ¿ÀºêÁ§Æ®¸¦ ¸¸µì´Ï´Ù. ¿É¼Ç -fpic´Â °øÀ¯
¶óÀ̺귯¸®¸¦ ±¸¼ºÇÏ´Â ¿ÀºêÁ§Æ®¸¦ ¸¸µé±â À§Çؼ­ ÇÊ¿äÇÕ´Ï´Ù.

  $ gcc -o shared.o -fpic -c shared.c

´ÙÀ½¿¡ °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸¸µì´Ï´Ù.

  $ ld -Bshareable -o libshared.so.1.0 shared.o

ÀÌ °øÀ¯ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏ´Â ½ÇÇà ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÕ´Ï´Ù.

  $ gcc -L. -lshared test_shared.c

ÇÊ¿ä¿¡ µû¶ó ÇöÀç ÀÛ¾÷ µð·ºÅ丮¸¦ °øÀ¯ ¶óÀ̺귯¸® °Ë»ö Æнº(LD_LIBRARY_
PATH)¿¡ Ãß°¡ÇÕ´Ï´Ù.

  $ $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`

ÀÚ ½ÇÇàÇØ º¾½Ã´Ù. "number ?:" ´ÙÀ½¿¡ ¼ýÀÚ¸¦ ÀÔ·ÂÇØ º¾´Ï´Ù. ¿¹¸¦ µé¾î 5
¸¦ ÀÔ·ÂÇß½À´Ï´Ù.

  $ ./a.out
  number ?:5
  result: 25


Á¤¸»·Î µ¿Àû ¸µÅ©°¡ ÀÌ·ç¾îÁ® Àִ°¡¸¦ È®ÀÎÇÏ·Á¸é, shared.c¸¦ º¯°æÇÏ¿© l
ibshared.so.1.0À» À籸¼ºÇÑ ÈÄ, a.outÀ» ½ÇÇàÇÏ¿© ±× º¯°æÀÌ ¹Ý¿µµÇ¾ú´ÂÁö
»ìÆ캸¸é µË´Ï´Ù.
¿¹¸¦ µé¾î shared.cÀÇ "a *=5;"¸¦ "a *= 10;"À¸·Î º¯°æÇÏ´Â °ÍÀÔ´Ï´Ù.

-fpic¸¦ ºÙÀÌÁö ¾Ê°í ÄÄÆÄÀÏÇÏ°Ô µÇ¸é, ½ÇÇàÀº µÇÁö¸¸ ½ÇÁ¦·Î °øÀ¯°¡ µÇÁö
¸øÇÏ°Ô µÇ¹Ç·Î ¹Ýµå½Ã -fpicÀ» Áֽñ⠹ٶø´Ï´Ù.
sonnet
[Append to This Answer]
Previous: (Answer) New Item
Next: (Answer) New Item
This document is: http://www.kr.freebsd.org/cgi-bin/fom.cgi?file=62
[Search] [Appearance]
This is a Faq-O-Matic 2.719.

Copyright © 1998-2003 Korea FreeBSD Users Group.
All rights reserved. webmaster at kr.FreeBSD.org
Powered by FreeBSD