라이브러리 예제 코드
#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;
}
-
소스코드 -> 오브젝트파일 (.o)
gcc -c file1.c
-
오브젝트파일 -> 공유 라이브러리 (.so)
gcc -shared -o libfile1.so file1.o
이때 반드시 lib[파일명].so 와 같은 형식으로 만들어줘야 한다.
이후 라이브러리를 불러올 때 앞의 lib 와 뒤의 .so는 자동으로 빼고 로드된다. -
라이브러리 경로 추가하기
총 두가지 방법이 존재한다.- LD_LIBRARY_PATH 직접추가
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/test/libs
- /usr/lib 디렉토리에 .so 파일 복사하기
- LD_LIBRARY_PATH 직접추가
둘중 하나를 하거나, 그래도 안되면 둘 다 해보면 된다.
-
소스코드 컴파일
#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 옵션은 경로를 지정한다. -
실행
- ldd 로 라이브러리 로드 확인