17.3. GCC를 사용하여 동적 library 생성
동적으로 연결된 라이브러리(공유 오브젝트)를 사용하면 코드 재사용 및 라이브러리 코드 업데이트를 통해 리소스 보존을 수행할 수 있습니다. 이 섹션에서는 소스에서 동적 라이브러리를 빌드하고 설치하는 단계를 설명합니다.
사전 요구 사항
- soname 메커니즘 이해
- GCC가 시스템에 설치되어 있습니다.
- 라이브러리의 소스 코드
절차
- 라이브러리 소스를 사용하여 디렉터리로 변경합니다.
위치 독립적인 코드 옵션을 사용하여 각 소스 파일을 오브젝트 파일로 컴파일
-fPIC
:$ gcc ... -c -fPIC some_file.c ...
오브젝트 파일의 이름은 원본 소스 코드 파일과 동일하지만 해당 확장자는
.o
입니다.오브젝트 파일에서 공유 라이브러리를 연결합니다.
$ gcc -shared -o libfoo.so.x.y -Wl,-soname,libfoo.so.x some_file.o ...
사용되는 주요 버전 번호는 X이고 마이너 버전 번호는 Y입니다.
libfoo.so.x.y
파일을 시스템의 동적 링커가 찾을 수 있는 적절한 위치에 복사합니다. Red Hat Enterprise Linux에서 라이브러리 디렉터리는/usr/lib64
입니다.# cp libfoo.so.x.y /usr/lib64
이 디렉터리의 파일을 조작하려면 루트 권한이 필요합니다.
soname 메커니즘에 대한 심볼릭 링크 구조를 생성합니다.
# ln -s libfoo.so.x.y libfoo.so.x # ln -s libfoo.so.x libfoo.so
추가 리소스
- Linux 설명서 프로젝트 - 프로그램 라이브러리 HOWTO - 3. 라이브러리 공유