Linux

리눅스 동적 라이브러리 ( 공유 라이브러리) 생성하기

라이브러리 예제 코드

#include <stdio.h>

int add(int a,int b){
        int result = 0;
        result = a+b;
        printf ("add : %d + %d = %d",a,b,result);
        return result;
}
  1. 소스코드 -> 오브젝트파일 (.o)
    gcc -c file1.c

  2. 오브젝트파일 -> 공유 라이브러리 (.so)
    gcc -shared -o libfile1.so file1.o
    이때 반드시 lib[파일명].so 와 같은 형식으로 만들어줘야 한다.
    이후 라이브러리를 불러올 때 앞의 lib 와 뒤의 .so는 자동으로 빼고 로드된다.

  3. 라이브러리 경로 추가하기
    총 두가지 방법이 존재한다.

    1. LD_LIBRARY_PATH 직접추가
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/test/libs
    2. /usr/lib 디렉토리에 .so 파일 복사하기

둘중 하나를 하거나, 그래도 안되면 둘 다 해보면 된다.

  1. 소스코드 컴파일

    #include <stdio.h>
      int main(){
      int res;
      res = add(2,3);
      printf("\n result is %d \n",res);
    }

    위와 같이 내가 만든 add함수를 포함하여 코드를 작성시킨다. 컴파일시엔 다음과 같이 진행
    gcc -o sum sum.c -l file1 -L .
    -l 옵션은 컴파일시에 포함할 동적 라이브러리 이름을, -L 옵션은 경로를 지정한다.

  2. 실행

  1. ldd 로 라이브러리 로드 확인