정적 라이브러리 만들기 / 정적 라이브러리 사용하기 / 공유 라이브러리 만들기
http://blog.naver.com/minsoub/60107587263
정적 라이브러리 만들기
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