(2+개 제품 제공)
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++는 1998년 첫 ISO 표준(C++98) 이후, 약 3년 주기로 주요 개정판을 발표합니다. 각 버전은 이전 버전과의 후방 호환성을 유지하되, 새로운 언어 기능과 라이브러리 확장을 추가합니다. 소싱 시 반드시 명시해야 할 요소는 ‘어떤 표준 버전을 목표로 하는가’입니다. 예를 들어, C++11 이상을 요구하는 코드는 C++98 전용 컴파일러로 빌드할 수 없습니다.
개발 팀이나 OEM 파트너에게 C++ 개발 환경을 요청할 때는 단순히 “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++ 자체는 ISO 표준 언어이므로 라이선스가 없지만, 실제 공급되는 개발 키트나 SDK는 여러 라이선스 조합을 포함합니다. 이를 간과하면 제품 출시 시 법적 리스크가 발생할 수 있습니다.
아니요. C++17 지원 SDK는 C++17까지의 문법과 라이브러리 기능만 보장합니다. C++20의 concepts나 ranges는 컴파일 에러가 발생합니다. 표준 버전은 컴파일러 플래그(-std=c++17 등)로 강제되며, 더 높은 버전을 사용하려면 해당 기능을 지원하는 컴파일러 버전이 반드시 필요합니다.
소스 코드 수준에서는 거의 호환됩니다(POSIX API나 Windows API 사용 제외). 그러나 컴파일된 바이너리(.exe/.dll vs .elf/.so)는 운영체제와 ABI가 달라 직접 실행 불가능합니다. 크로스플랫폼 개발 시 CMake와 같은 빌드 시스템을 통해 각 플랫폼별로 별도 빌드가 필수적입니다.
예, 대부분 그렇습니다. 이는 특정 MCU(예: STM32H7, NXP i.MX RT) 또는 SoC(예: Rockchip RK3566)용으로 최적화된 C++ 라이브러리, 드라이버, HAL 계층을 포함합니다. 단순한 컴파일러가 아니라, 하드웨어 핀맵, 클록 설정, 인터럽트 벡터 등 하드웨어 리소스와 밀접하게 연동됩니다. 따라서 칩셋 모델명과 정확히 일치하는 SDK를 선택해야 합니다.