16.3. GCC에서 라이브러리 사용
라이브러리는 프로그램에서 재사용할 수 있는 코드 패키지입니다. C 또는 C++ 라이브러리는 다음 두 부분으로 구성됩니다.
- 라이브러리 코드
- 헤더 파일
라이브러리를 사용하는 코드 컴파일
헤더 파일은 라이브러리의 인터페이스를 설명합니다. 라이브러리에서 사용할 수 있는 함수 및 변수입니다. 헤더 파일의 정보는 코드를 컴파일하는 데 필요합니다.
일반적으로 라이브러리의 헤더 파일은 애플리케이션 코드와 다른 디렉터리에 저장됩니다. GCC에 헤더 파일이 있는 위치를 지정하려면 -I
옵션을 사용합니다.
$ gcc ... -Iinclude_path ...
include_path 를 헤더 파일 디렉터리의 실제 경로로 바꿉니다.
I
옵션을 여러 번 사용하여 헤더 파일로 여러 디렉터리를 추가할 수 있습니다. 헤더 파일을 찾을 때 이러한 디렉터리는 -I
옵션에 표시되는 순서대로 검색됩니다.
라이브러리를 사용하는 코드 연결
실행 파일을 연결할 때 애플리케이션의 오브젝트 코드와 라이브러리의 바이너리 코드를 모두 사용할 수 있어야 합니다. 정적 및 동적 라이브러리의 코드는 다양한 형태로 제공됩니다.
-
정적 라이브러리는 아카이브 파일로 사용할 수 있습니다. 개체 파일의 그룹이 포함되어 있습니다. 아카이브 파일의 확장자는
.a
.a입니다. -
동적 라이브러리는 공유 개체로 사용할 수 있습니다. 이 파일은 실행 파일의 형식입니다. 공유 오브젝트의 파일 이름 확장자는
.so
.
GCC에 라이브러리의 아카이브 또는 공유 오브젝트 파일을 지정하려면 -L
옵션을 사용합니다.
$ gcc ... -Llibrary_path -lfoo ...
library_path 를 라이브러리 디렉터리의 실제 경로로 바꿉니다.
L 옵션을 여러
번 사용하여 여러 디렉터리를 추가할 수 있습니다. 라이브러리를 찾을 때 이러한 디렉터리는 -L
옵션 순서로 검색됩니다.
옵션의 순서가 중요합니다. GCC는 이 라이브러리의 디렉토리를 알고 있지 않으면 foo 라이브러리와 연결할 수 없습니다. 따라서 라이브러리를 연결하는 데 -
옵션을 사용하여 라이브러리 디렉터리를 지정합니다.
l 옵션을 사용하기 전에 -
L
컴파일 및 연결 코드는 하나의 단계에서 라이브러리를 사용합니다.
코드를 컴파일하고 하나의 gcc
명령에 연결할 수 있는 경우 한 번에 위에서 언급한 두 가지 상황에 대해 옵션을 사용합니다.
추가 리소스
- GCC(GNU Compiler Collection) 사용 - 디렉터리 검색을 위한 3.16 옵션
- GCC(GNU Compiler Collection) 사용 - 링크용 3.15 옵션