최종 업데이트: 2026-09-27

씨 플러스

(2+개 제품 제공)

C++ 언어의 주요 구현체 및 컴파일러 버전 비교

C++는 단일한 ‘제품’이 아니라, ISO/IEC 14882 표준에 따라 다양한 공급자와 플랫폼에서 구현되는 프로그래밍 언어입니다. 실제 개발 환경에서는 언어 표준 버전(C++11, C++17, C++20 등), 컴파일러 종류(GCC, Clang, MSVC), 실행 환경(Windows/Linux/macOS), 라이브러리 지원 범위 등이 복합적으로 작용합니다. 따라서 ‘C++’를 소싱할 때는 단순히 이름이 아닌, 구체적인 구현체와 호환성 조건을 명시해야 합니다. 아래 표는 실무에서 가장 널리 사용되는 C++ 구현체 4가지를 기준으로, 각각의 핵심 특성과 적용 시나리오를 정리한 것입니다.

구현체 / 버전 주요 플랫폼 및 호환성 표준 지원 수준 및 특징 실무 적용 추천 시나리오
GCC (GNU Compiler Collection) 13.x Linux 기본 컴파일러, macOS 및 Windows(WSL/Cygwin) 지원. ARM/x86_64/PowerPC 등 다중 아키텍처 대응 C++23 초안 기능 일부 지원, C++20 완전 지원. -std=gnu++20, -std=c++20 옵션 제공. STL 구현(libstdc++) 안정성 높음 임베디드 리눅스 시스템, 서버 애플리케이션, 오픈소스 프로젝트 빌드. 특히 GNU 도구체인 기반 환경과의 통합성이 뛰어남
Clang/LLVM 17.x macOS 기본 컴파일러(Xcode), Linux, Windows(MinGW-Clang), Android NDK 포함. 크로스컴파일 용이 C++20 전면 지원, C++23 일부 기능(예: std::print 미지원) 활성화 가능. 오류 메시지가 명확하고, 정적 분석 도구( clang-tidy )와 연동 우수 크로스플랫폼 데스크톱 앱, 게임 엔진 개발, iOS/macOS 앱, 정밀한 코드 품질 관리가 필요한 프로젝트
MSVC (Microsoft Visual C++) 17.9 (VS 2022) Windows 전용. Windows SDK 및 .NET 상호 운용성 강점. WSL2 내부에서도 사용 가능 C++20 대부분 지원(Coroutines 제외), C++17 완전 지원. STL 구현(msvcp140.dll 기반)은 Windows API와 긴밀 통합. /std:c++20 옵션 제공 윈도우 네이티브 애플리케이션, DirectX 기반 게임, 엔터프라이즈 비즈니스 솔루션, COM/OLE 기반 시스템
Intel C++ Compiler (ICC) 2023.2 (Legacy) Linux/Windows 지원. Intel CPU 최적화 전용. 2024년 이후 ICC는 oneAPI DPC++/C++ 컴파일러로 통합됨 C++17 기반, C++20 일부 기능만 지원. SIMD 자동 벡터화, OpenMP 5.0, 인텔 하드웨어 특화 최적화(예: AVX-512) 강점 고성능 컴퓨팅(HPC), 과학 계산, 금융 모델링, 실시간 신호 처리 등 CPU 집약형 작업 중심 프로젝트

C++ 표준 버전별 핵심 차이점

C++는 1998년 첫 ISO 표준(C++98) 이후, 약 3년 주기로 주요 개정판을 발표합니다. 각 버전은 이전 버전과의 후방 호환성을 유지하되, 새로운 언어 기능과 라이브러리 확장을 추가합니다. 소싱 시 반드시 명시해야 할 요소는 ‘어떤 표준 버전을 목표로 하는가’입니다. 예를 들어, C++11 이상을 요구하는 코드는 C++98 전용 컴파일러로 빌드할 수 없습니다.

  • C++11: 자동 타입 추론(auto), 스마트 포인터(std::unique_ptr/std::shared_ptr), 람다 표현식, move semantics 도입 — 현대 C++의 기초가 됨
  • C++17: structured bindings, std::optional, std::variant, 파일 시스템 라이브러리(std::filesystem), 병렬 알고리즘 지원
  • C++20: 개념(concepts), 코루틴(coroutines), 범위(range) 라이브러리, std::format, 삼원 비교 연산자(<=>)
  • C++23: std::print, std::expected, 컨테이너의 range 생성자 확장, consteval 향상 — 일부 컴파일러는 아직 완전 지원하지 않음

컴파일러 선택 시 고려해야 할 4가지 실무 요소

개발 팀이나 OEM 파트너에게 C++ 개발 환경을 요청할 때는 단순히 “C++ 지원”이라는 표현보다 다음과 같은 구체적인 사항을 명시하는 것이 신뢰성과 효율성을 높입니다.

  1. 타겟 운영체제 및 아키텍처: Windows x64, Linux ARM64, macOS Universal Binary 등 구체적 플랫폼을 지정해야 컴파일러와 라이브러리 조합을 정확히 결정할 수 있습니다.
  2. 빌드 도구체인 요구사항: CMake 3.22+ 또는 Meson 1.0+ 같은 빌드 시스템과의 호환 여부, CI/CD 파이프라인에서의 자동화 가능성 여부를 확인해야 합니다.
  3. 라이브러리 의존성: Boost, Qt, Poco, OpenCV 등 제3자 라이브러리와의 링킹 방식(static/shared), ABI 호환성(예: libstdc++ vs libc++)이 문제될 수 있습니다.
  4. 디버깅 및 성능 분석 지원: GDB/LLDB 또는 Visual Studio 디버거와의 연동, 프로파일링 도구(gprof, perf, VTune)와의 호환성 역시 구현체 선정의 중요한 기준입니다.

오픈소스 기반 C++ 개발 키트의 구성 요소

알리바바에서 ‘C++’ 관련 제품을 소싱할 경우, 대부분의 공급업체는 ‘C++ 개발 키트’ 또는 ‘C++ 기반 임베디드 SDK’ 형태로 패키징된 솔루션을 제공합니다. 이는 단순한 컴파일러가 아니라, 다음 5개 핵심 요소를 포함한 통합 환경입니다.

구성 요소 설명 공급업체 제공 형태 예시
C++ 컴파일러 바이너리 GCC 또는 Clang 기반 실행 파일. ARM용 크로스 컴파일러 포함 여부 확인 필요 tar.gz 압축 파일, Docker 이미지, Yocto layer 형태
표준 라이브러리 헤더 및 객체 파일 libstdc++ 또는 libc++의 헤더(.h/.hpp) 및 라이브러리(.a/.so/.dll) 시스템 경로(/usr/include/c++/) 또는 SDK 내 독립 경로에 포함
빌드 스크립트 및 샘플 프로젝트 Makefile, CMakeLists.txt, 빌드 가이드 문서, 테스트 코드 포함 여부 GitHub 저장소 링크 또는 ZIP 다운로드 제공

C++ 관련 소싱 시 주의할 법적 및 기술적 제약

C++ 자체는 ISO 표준 언어이므로 라이선스가 없지만, 실제 공급되는 개발 키트나 SDK는 여러 라이선스 조합을 포함합니다. 이를 간과하면 제품 출시 시 법적 리스크가 발생할 수 있습니다.

  • GPL 라이브러리 포함 여부: 일부 공급업체는 GCC 기반 툴체인을 GPL v3로 배포하며, 이를 동적으로 링크할 경우 파생 제품에도 GPL 적용이 요구될 수 있습니다. 상용 제품에는 일반적으로 LGPL 또는 MIT 라이선스 라이브러리 선호
  • ABI 호환성 문제: libstdc++ 11.x와 12.x 사이에는 이진 호환성이 보장되지 않음. SDK를 업데이트할 경우 전체 시스템 재컴파일이 필요할 수 있음
  • 특허 관련 제한: 일부 하드웨어 가속 기능(예: Intel AVX-512)은 특정 CPU 라이선스 조건 하에서만 사용 허용됨. 공급업체 사양서에 명시 여부 반드시 확인

자주 묻는 질문

Q1. ‘C++17 지원’이라고 표기된 SDK는 C++20 코드도 빌드할 수 있나요?

아니요. C++17 지원 SDK는 C++17까지의 문법과 라이브러리 기능만 보장합니다. C++20의 concepts나 ranges는 컴파일 에러가 발생합니다. 표준 버전은 컴파일러 플래그(-std=c++17 등)로 강제되며, 더 높은 버전을 사용하려면 해당 기능을 지원하는 컴파일러 버전이 반드시 필요합니다.

Q2. Windows용 MSVC와 Linux용 GCC로 작성된 C++ 코드를 서로 호환할 수 있나요?

소스 코드 수준에서는 거의 호환됩니다(POSIX API나 Windows API 사용 제외). 그러나 컴파일된 바이너리(.exe/.dll vs .elf/.so)는 운영체제와 ABI가 달라 직접 실행 불가능합니다. 크로스플랫폼 개발 시 CMake와 같은 빌드 시스템을 통해 각 플랫폼별로 별도 빌드가 필수적입니다.

Q3. ‘C++ 개발용 펌웨어 SDK’라는 제품은 하드웨어와 결합되어야 하나요?

예, 대부분 그렇습니다. 이는 특정 MCU(예: STM32H7, NXP i.MX RT) 또는 SoC(예: Rockchip RK3566)용으로 최적화된 C++ 라이브러리, 드라이버, HAL 계층을 포함합니다. 단순한 컴파일러가 아니라, 하드웨어 핀맵, 클록 설정, 인터럽트 벡터 등 하드웨어 리소스와 밀접하게 연동됩니다. 따라서 칩셋 모델명과 정확히 일치하는 SDK를 선택해야 합니다.