2009년 6월 6일 토요일

gcc library 만들기


정적 라이브러리 만들기


1.Object 만들기
$ g++ -c Squawk.cpp Cat.cpp Dog.cpp Lion.cpp Car.cpp

2.라이브러리 만들기
$ ar cr libSquawk.a Squawk.o Cat.o Dog.o Car.o Lion.o

3.라이브러리 인덱스 만들기 (optional)
ranlib == ar -s와 같으며, 만들어진 index는 nm -s를 통해 확인 가능
$ ranlib libSquawk.a

정적 라이브러리 사용하기

1.컴파일
라이브러리 Header 파일 디렉토리 지정 필요
$ g++ -c -I ../CoreSquawk main.cpp

2.링크
라이브러리 및 라이브러리 디렉토리 지정 필요
$ g++ -o TestSquawk.exe main.o -L ../CoreSquawk -lSquawk

공유 라이브러리 만들기

하나 이상의 프로세스에서 사용되는 경우 메모리 양과 실행 파일 크기 줄여줌, 개발 과정 용이, 라이브러리의 변경시에도 대부분 애플리케이션 재컴파일 불필요

1.재배치가능한 Object (Position Independent Code) 만들기
$ g++ -fPIC -c Squawk.cpp Cat.cpp Dog.cpp Lion.cpp Car.cpp

2.공유 라이브러리 만들기
$ gcc -shared -o libSquawk.so Squawk.o Cat.o Dog.o Car.o Lion.o

공유 라이브러리 사용하기

1.컴파일 라이브러리 Header 파일 디렉토리 지정 필요
$ g++ -c -I ../CoreSquawk main.cpp

2.링크 라이브러리 및 라이브러리 디렉토리 지정 필요
$ g++ -o TestSquawk.exe main.o -L ../CoreSquawk -lSquawk

꼭 정적인 라이브러리를 링크 하고자 할 때
$ g++ -o TestSquawk.exe main.o ../CoreSquawk/libSquawk.a

ldd 명령: 실행 프로그램이 사용하는 공유 라이브러리 나열
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/CoreSquawk
$ ldd TestSquawk.exe

참고자료 :
윈도우에서 유닉스로 이식하기 http://www.ibm.com/developerworks/kr/library/au-porting/index.html

댓글 없음:

댓글 쓰기