C++에서 라이브러리 활용하기

gigyesik·2025년 7월 9일

developer-roadmap-c++

목록 보기
20/20

C++에서 라이브러리 활용하기

C++ 프로젝트를 하다 보면 기본 문법만으로는 해결이 어려운 상황이 자주 발생한다. 이때 외부 라이브러리를 활용하면 개발 시간을 단축하고, 신뢰성 있는 기능을 손쉽게 사용할 수 있다. C++ 라이브러리는 정적(static)과 동적(dynamic) 두 가지 방식으로 사용할 수 있으며, 각 방식은 용도에 따라 선택하면 된다.


📦 정적 라이브러리 (Static Libraries)

정적 라이브러리는 컴파일 시점에 프로그램에 통합된다. 실행 파일 하나만으로 배포가 가능하다는 장점이 있다.

만들기

g++ -c sourcefile.cpp -o objectfile.o
ar rcs libmystaticlibrary.a objectfile.o

사용하기

g++ main.cpp -o myprogram -L/path/to/your/library/ -lmystaticlibrary

🧩 동적 라이브러리 (Dynamic Libraries)

동적 라이브러리는 실행 중에 로드된다. 실행 파일의 크기를 줄일 수 있고, 라이브러리를 업데이트하면 전체 프로그램을 다시 컴파일하지 않아도 된다는 장점이 있다.

만들기

g++ -c -fPIC sourcefile.cpp -o objectfile.o
g++ -shared -o libmydynamiclibrary.so objectfile.o

사용하기

g++ main.cpp -o myprogram -L/path/to/your/library/ -lmydynamiclibrary

환경 변수 설정 예시 (Linux)

export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH

🔖 라이선스 이해하기

외부 라이브러리를 사용할 때는 해당 라이브러리의 라이선스를 반드시 확인해야 한다.

MIT License

-사용, 수정, 배포 모두 자유롭다.

  • 단, 저작권 고지와 면책 조항은 포함해야 한다.

GNU GPL

  • 소스 공개가 필수이며, GPL 라이브러리를 사용하는 프로그램도 GPL로 배포해야 한다.

Apache 2.0

  • MIT와 유사하지만, 특허 보호와 변경 내용 명시 조건이 추가된다.

📂 헤더 & 소스 인클루전

헤더 인클루전

#include <iostream>         // 표준 라이브러리
#include "myHeader.h"       // 사용자 정의 헤더

소스 인클루전 (추천되지 않음)

#include "mySourceFile.cpp"

🧱 주요 C++ 라이브러리 소개

C++에는 다양한 라이브러리가 존재하며, 각 목적에 맞게 선택할 수 있다.

  • Boost : 범용 라이브러리의 집합. 거의 모든 도메인 커버
  • OpenCV :이미지 및 비디오 처리용 컴퓨터 비전 라이브러리
  • POCO : 네트워크, HTTP, 파일시스템 등을 다루는 범용 라이브러리
  • TensorFlow (C++) : 머신러닝을 위한 구글의 라이브러리 (C++ 바인딩 지원)
  • protobuf : 구글의 데이터 직렬화 도구
  • spdlog : 빠르고 가벼운 C++ 로깅 라이브러리
  • gRPC : Google의 고성능 RPC 프레임워크
  • pybind11 : C++ 함수를 Python에서 호출할 수 있도록 바인딩
  • fmt : printf 스타일 형식을 modern C++ 스타일로 바꿔줌
  • opencl : GPU 가속 병렬 컴퓨팅 라이브러리
  • ranges_v3 : C++20의 ranges 기능을 미리 제공한 라이브러리

🧪 C++ 프레임워크 소개

C++에서는 테스트, GUI, 디버깅 등을 위한 프레임워크도 활발하게 사용된다.

  • gtest / gmock : 구글에서 만든 단위 테스트 및 Mock 프레임워크
  • Qt : 강력한 GUI 및 플랫폼 독립 애플리케이션 개발 프레임워크
  • Catch2 : BDD 스타일 테스트 프레임워크
  • Orbit profiler : 성능 분석을 위한 실시간 CPU 프로파일러
  • PyTorch C++ API : PyTorch를 C++에서 사용할 수 있는 인터페이스 (LibTorch)

✅ 마무리

C++ 프로젝트에서 라이브러리와 프레임워크를 적절히 활용하면 훨씬 더 생산적이고 안정적인 코드를 작성할 수 있다.
처음에는 정적/동적 라이브러리의 차이를 익히고, 자주 쓰이는 라이브러리부터 익혀 나가면 좋다.
라이선스를 항상 체크하고, 프로젝트 목적에 따라 적절한 도구를 선택하자.

profile
Server Dev

0개의 댓글