Programming/C,C++2013. 3. 18. 09:35

정적 라이브러리 만들기


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://poongcha.blogspot.kr/2009/06/gcc-library.html

'Programming > C,C++' 카테고리의 다른 글

boost 빌드  (0) 2012.12.03
Posted by Mocker