Passion/Programming

동적 라이브러리 만들기

sunshout 2007. 1. 17. 19:40
동적 라이브러리 만들기는 정적 라이브러리 만들기와 매우 유사하다.
단지 컴파일 방법이 다르고, 내부 동작 메커니즘이 다를 뿐이다.

간단하게 hello, library world를 찍는 동적 라이브러리를 생성하고,
이를 사용하는 방법에 대해서 알아보도록 하겠다.

동적 라이브러리 파일 (libhello.c)
[CODE type=C]
/* shared library file */
#include <stdio.h>
void hello(void)
{
  printf("Hello, library world\n");
}
[/HTML][/CODE]

컴파일 하기 (Position Independet Code)
# gcc -fPIC -o libhello.o -c libhello.c

공유라이브러리로 만들기
# gcc -shared -c libhello-shared.so libhello.o

라이브러리 등록 (bash 기준)
libhello-shared.so 파일이 있는 디렉토리를 LD_LIBRARY_PATH에 등록
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

어플리케이션에서 사용하기
[CODE type=C]
#include "libhello.h"

int main(void)
{
   hello();
   return 0;
}
[/HTML][/CODE]

어플리케이션 컴파일
# gcc -o hello -L. -lhello-shared hello.o

실행
#./hello

소스코드
http://sunshout.googlecode.com/svn/trunk/Programming/shared_library/

현재 프로그램이 어떤 동적 라이브러리를 사용하고 있는지를 찾기 위해서는
# ldd <프로그램명>