C++ 라이브러리 작성 및 사용법: 단계별 가이드

C++에서 라이브러리를 생성하고 사용하는 것은 모듈식이며 재사용 가능한 코드를 구축하려는 개발자에게 필수적인 기술입니다. 이 블로그 게시물은 C++ 라이브러리를 작성하고 컴파일하며 통합하는 과정을 안내하며, 특히 Linux 및 Windows 환경을 위한 공유 라이브러리에 중점을 둡니다. 이 주제를 쉽게 이해하도록 돕는 간단한 예제와 명확한 설명을 계속 읽어보세요.

C++ 라이브러리 이해하기

C++ 라이브러리란?

C++ 라이브러리는 프로젝트에 포함시켜 코드 작성 없이 기능을 재사용할 수 있는 미리 컴파일된 코드의 모음입니다. C++에는 두 가지 기본 유형의 라이브러리가 있습니다:

  • 정적 라이브러리(Static Libraries): 이들은 컴파일 시간에 링크되어 실행 파일의 일부가 됩니다. Linux에서는 일반적으로 .a 확장자를 가지고 Windows에서는 .lib를 가집니다.
  • 동적 라이브러리(Dynamic Libraries): 이들은 실행 시간에 링크됩니다. Linux에서는 .so 확장자를 가지며, Windows의 해당 파일은 .dll입니다.

이 게시물에서는 동적 라이브러리를 생성하고 사용하는 데 중점을 두겠습니다.

C++에서 동적 라이브러리 생성하기

1단계: 라이브러리 코드 작성하기

간단한 예제부터 시작하겠습니다. 우리는 메시지를 출력하는 함수가 포함된 라이브러리를 생성하고자 합니다.

  1. 헤더 파일 생성하기 (t.h):

    void f();
    
  2. 소스 파일 생성하기 (t.cc):

    #include <iostream>
    #include "t.h"    
    
    void f() {
        std::cout << "OH HAI.  I'M F." << std::endl;
    }
    

2단계: 코드를 공유 라이브러리로 컴파일하기

이제 라이브러리 코드가 준비되었으므로, 이를 공유 라이브러리로 컴파일할 것입니다. 다음과 같이 진행하세요:

  1. 소스 코드를 오브젝트 코드로 컴파일하기:

    g++ -fpic -c t.cc         # t.o 생성
    
  2. 공유 라이브러리 생성하기:

    g++ -shared -o t.so t.o   # t.so 생성
    

3단계: 주요 프로그램에서 라이브러리 사용하기

이제 우리가 방금 생성한 라이브러리를 사용할 주요 애플리케이션을 만듭니다.

  1. 주요 파일 생성하기 (r.cc):
    #include "t.h"
    
    int main() {
        f(); // 라이브러리에서 함수 호출
        return 0;
    }
    

4단계: 애플리케이션을 라이브러리와 함께 컴파일하고 링크하기

주요 프로그램과 공유 라이브러리를 함께 컴파일하려면 다음 명령어를 사용하세요:

g++ r.cc t.so -o mainApp

5단계: 라이브러리 경로 설정하기 (Linux 전용)

Linux에서는 프로그램이 실행 시간에 공유 라이브러리를 찾을 수 있도록 해야 합니다. 현재 디렉토리를 포함하기 위해 LD_LIBRARY_PATH를 설정할 수 있습니다:

export LD_LIBRARY_PATH="."

공유 라이브러리를 전역 라이브러리 디렉토리에 설치하는 경우 이 단계를 수행할 필요는 없습니다.

마지막 단계: 애플리케이션 실행하기

컴파일이 완료되면 애플리케이션을 실행할 수 있습니다:

./mainApp

출력 결과는 다음과 같을 것입니다:

OH HAI.  I'M F.

주요 단계 요약

  • 라이브러리 함수에 대한 헤더 파일을 작성하세요.
  • 소스 파일에 구현을 작성하세요.
  • 소스 파일을 오브젝트 파일로 컴파일하세요.
  • 오브젝트 파일로부터 공유 라이브러리를 생성하세요.
  • 주요 애플리케이션을 작성하고 라이브러리와 링크하세요.
  • 애플리케이션이 실행 시간에 라이브러리를 찾을 수 있도록 하세요.

이 단계를 따르면 성공적으로 자신의 C++ 라이브러리를 생성하고 활용할 수 있으며, 체계적이고 재사용 가능한 코드의 길을 열 수 있습니다. 이 기술은 C++ 프로그래밍 관행을 향상시키려는 모든 개발자에게 매우 귀중합니다.

이제 C++에서 자신의 동적 라이브러리를 탐색하고 생성할 수 있는 준비가 되었습니다. 즐거운 코딩 되세요!