C++ 개발 환경 구축 | "C++ 어디서 시작하죠?" 컴파일러 설치부터 Hello World까지
이 글의 핵심
C++ 시작하기. Visual Studio(MSVC), MinGW(GCC), Xcode(Clang) 설치 방법과 Hello World 프로그램 작성·컴파일·실행을 Windows, macOS, Linux별로 정리.
[C++ 실전 가이드 #1] C++ 개발 환경 구축
이전 글: C++ 실전 가이드 #0: C++이란?에서 C++의 역사, 현황, 용도, 장단점을 다뤘습니다.
요구 환경: Windows / macOS / Linux 중 하나. 각 OS별로 MSVC, MinGW(GCC), Xcode(Clang), 또는 시스템 패키지(g++, build-essential 등) 설치만 있으면 됩니다. 별도 라이브러리 없이 Hello World 수준부터 가능합니다.
이 글을 읽으면 OS별 컴파일러 설치부터 첫 프로그램 실행까지 단계별로 따라 할 수 있습니다.
C++을 시작하려면 가장 먼저 개발 환경을 구축해야 합니다. 이 글에서는 Windows, macOS, Linux 운영체제별로 컴파일러(사람이 쓴 소스 코드를 실행 파일·기계어로 바꿔 주는 도구)를 설치하고 첫 프로그램을 실행하는 방법을 자세히 설명합니다. 처음에는 “컴파일러 하나만 설치해서 터미널에서 g++ 한 번 돌려보기”만 해도 충분합니다. IDE(통합 개발 환경, Integrated Development Environment)나 빌드 시스템(CMake #4)은 다음 글(#2)에서 다루므로, 우선 소스 파일을 실행 파일로 바꾸는 경험을 해 보는 것이 목표입니다.
목차
- 흔히 겪는 문제 시나리오
- 왜 개발 환경이 중요한가?
- 컴파일러 선택 가이드
- Windows 환경 구축
- macOS 환경 구축
- Linux 환경 구축
- 첫 프로그램 실행
- IDE 설정 (VS Code, Visual Studio)
- 빌드 도구 (Make, CMake 기본)
- 간단한 빌드: 온라인 사이트 이용
- 자주 겪는 에러와 해결법
- 모범 사례 (Best Practices)
- 트러블슈팅 가이드
- 프로덕션 환경 구축 팁
1. 흔히 겪는 문제 시나리오
C++을 처음 시작할 때 많은 분들이 아래와 같은 상황에 직면합니다. “나만 이런가?”가 아니라, 아주 흔한 상황입니다.
시나리오 1: “g++을 찾을 수 없습니다”
상황: 튜토리얼을 따라
g++ hello.cpp -o hello를 입력했는데, “g++은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램 또는 배치 파일이 아닙니다”라는 에러가 뜹니다.원인: 컴파일러가 설치되지 않았거나, 설치했더라도 PATH 환경 변수에 등록되지 않았습니다. Windows에서는 특히 MinGW/MSYS2 설치 후 PATH 추가를 수동으로 해야 하는 경우가 많습니다.
해결 방향: 이 글의 Windows 환경 구축 섹션에서 PATH 추가 방법을 확인하세요.
시나리오 2: “Visual Studio가 너무 무거워요”
상황: Windows 사용자인데, Visual Studio Community가 7GB 이상이라 디스크 공간이 부족하거나, 설치 시간이 30분 이상 걸려 부담스럽습니다.
원인: Visual Studio는 IDE, 디버거, 여러 플랫폼 SDK가 포함된 통합 패키지라 용량이 큽니다.
해결 방향: MinGW(MSYS2)를 사용하면 수백 MB 수준으로 가볍게 시작할 수 있습니다. 또는 WSL(Windows Subsystem for Linux)에서 Linux용 g++을 쓰는 방법도 있습니다.
시나리오 3: “cl 명령어가 인식되지 않아요”
상황: Visual Studio를 설치했는데, 일반 명령 프롬프트(CMD)에서
cl hello.cpp를 실행하면 “cl은(는) 내부 또는 외부 명령…” 에러가 납니다.원인: MSVC 컴파일러(
cl)는 Developer Command Prompt 또는vcvarsall.bat으로 환경을 설정한 터미널에서만 동작합니다. 일반 CMD에는 PATH와 환경 변수가 설정되어 있지 않습니다.해결 방향: 시작 메뉴에서 “Developer Command Prompt for VS”를 검색해 실행하거나, 트러블슈팅 섹션을 참고하세요.
시나리오 4: “iostream을 찾을 수 없습니다”
상황:
#include <iostream>이 있는 코드를 컴파일했는데 “fatal error: iostream: No such file or directory”가 발생합니다.원인: C++ 표준 라이브러리 헤더 경로가 잘못되었거나, C 컴파일러(
gcc)로 C++ 파일을 컴파일하려 했을 수 있습니다. 또는 오래된 컴파일러에서 C++17 이상 문법을 쓰는 경우에도 발생할 수 있습니다.해결 방향:
g++(gcc가 아님)을 사용하고,-std=c++17옵션을 추가해 보세요. 일반적인 에러 섹션을 참고하세요.
시나리오 5: “macOS에서 g++이 clang을 가리킵니다”
상황: macOS에서
g++ --version을 실행했는데 “Apple clang version…”이 출력됩니다. “GCC를 쓰고 싶은데?”라고 생각할 수 있습니다.원인: macOS에는 기본적으로 GCC가 없고,
g++은 Clang을 가리키는 심볼릭 링크입니다. Apple이 라이선스 등의 이유로 Clang을 기본으로 제공합니다.해결 방향: macOS에서 개발할 때는 Clang을 쓰는 것이 일반적이고, 대부분의 경우 문제없습니다. 진짜 GCC가 필요하면 Homebrew로
gcc를 별도 설치할 수 있습니다.
시나리오 6: “로컬에서는 되는데 CI(GitHub Actions 등)에서만 실패해요”
상황: 로컬 Windows에서 MinGW로 빌드하면 되는데, GitHub Actions의 Ubuntu runner에서는 실패합니다(또는 그 반대).
원인: 컴파일러 버전 차이, C++ 표준 지원 차이, 플랫폼별 라이브러리 차이 등이 원인일 수 있습니다.
해결 방향: 프로덕션 환경 구축 팁에서 CI/CD 설정과 Docker 기반 빌드 방법을 참고하세요.
시나리오 7: “DLL을 찾을 수 없습니다” (Windows MinGW)
상황: MinGW로
hello.exe를 빌드했는데, 다른 폴더로 복사하거나 다른 PC에서 실행하면 “libgcc_s_seh-1.dll을 찾을 수 없습니다” 같은 에러가 뜹니다.원인: MinGW 런타임 DLL이 실행 파일과 같은 경로에 없거나 PATH에 없습니다. 정적 링크를 하지 않았기 때문입니다.
해결 방향:
-static옵션으로 정적 링크하거나,C:\msys64\mingw64\bin을 PATH에 추가하세요. 배포 시에는-static-libgcc -static-libstdc++를 사용하면 DLL 의존성을 줄일 수 있습니다.
시나리오 8: “VS Code에서 IntelliSense가 동작하지 않아요”
상황: VS Code에 C++ 확장을 설치했는데 자동 완성이 안 됩니다.
원인:
compilerPath미설정 또는 경로 오류.해결 방향: IDE 설정에서
c_cpp_properties.json의compilerPath를 확인하세요.
2. 왜 개발 환경이 중요한가?
C++은 컴파일 언어입니다. Python이나 JavaScript처럼 코드를 바로 실행할 수 없고, 반드시 컴파일러를 통해 기계어로 변환해야 실행할 수 있습니다. 인터프리터 언어는 한 줄씩 해석하며 실행하지만, C++은 소스 전체(또는 단위별)를 먼저 기계어로 번역한 실행 파일을 만들어 두고 그걸 실행합니다. 그래서 “코드를 고쳤으면 다시 컴파일해야 결과에 반영된다”는 점이 다릅니다.
개발 환경의 핵심 요소
C++ 개발을 위해서는 다음 세 가지 요소가 필요합니다:
1. 컴파일러: 소스 코드를 실행 파일로 변환하는 핵심 도구입니다. 비유하면 “한국어 원고(C++ 소스)를 CPU가 읽을 수 있는 기계어로 번역해 주는 번역사”라고 생각하면 됩니다. GCC(GNU Compiler Collection), Clang, MSVC(Microsoft Visual C++) 등이 있으며, 각각 특징과 장단점이 다릅니다.
2. 빌드 도구: 여러 파일로 구성된 프로젝트를 효율적으로 관리합니다. CMake가 가장 많이 사용되며, 크로스 플랫폼 빌드를 지원합니다.
3. 코드 편집기: 코드를 작성하고 디버깅하는 도구입니다. VS Code, Visual Studio, CLion 등이 있으며, 각각 장단점이 있습니다.
이 글에서는 먼저 컴파일러 설치에 집중합니다. 컴파일러 없이는 실행 파일을 만들 수 없기 때문에, 빌드 도구(CMake)나 편집기(VS Code)는 “어떤 컴파일러를 쓸지”가 정해진 뒤에 설정하는 편이 자연스럽습니다. 그래서 순서를 “컴파일러 → 빌드 도구 → 편집기”로 두었고, #4 CMake와 #3 VS Code에서는 “이미 설치한 g++ 또는 clang++ 경로를 지정하는 방법”을 다룹니다.
같은 C++ 코드라도 컴파일러(MSVC, GCC, Clang)에 따라 최적화 방식과 에러 메시지가 달라지므로, 나중에 크로스 플랫폼이나 성능 튜닝을 할 때 “어느 컴파일러로 빌드했는지”가 중요해집니다. 실무 팁: 컴파일러를 먼저 설치해 두면 이후 VS Code나 CMake에서 “컴파일러 경로”를 지정할 때 일관되게 같은 도구를 쓰게 되어, “로컬에서는 되는데 CI에서만 안 된다” 같은 문제를 줄일 수 있습니다.
C++ 빌드 과정 다이어그램
flowchart LR
A[소스코드 .cpp] --> B[전처리기]
B --> C[컴파일러]
C --> D[어셈블러]
D --> E[링커]
E --> F[실행파일 .exe/.out]
3. 컴파일러 선택 가이드
운영체제마다 권장하는 컴파일러가 다릅니다. 각 컴파일러의 특징을 비교해보겠습니다.
| 컴파일러 | 운영체제 | 주요 특징 | 장점 |
|---|---|---|---|
| MSVC (Microsoft Visual C++) | Windows | Visual Studio와 완벽하게 통합 | Windows API(Application Programming Interface) 최적화, 강력한 디버거 |
| GCC (GNU Compiler Collection) | Linux | 오픈소스, 뛰어난 표준 준수 | 안정성, 다양한 플랫폼 지원 |
| Clang | macOS | 빠른 컴파일, 친절한 에러 메시지 | 개발 생산성 향상 |
컴파일러 선택 플로우차트
flowchart TD
A[어떤 OS를 사용하나요?] --> B{Windows?}
A --> C{macOS?}
A --> D{Linux?}
B --> E[Windows 전용 앱 개발?]
E -->|예| F[MSVC 권장]
E -->|아니오| G[MinGW 또는 WSL]
C --> H[Xcode Command Line Tools / Clang]
D --> I[GCC build-essential]
운영체제별 권장 컴파일러
Windows 사용자:
- MSVC(Visual Studio)를 추천합니다. Windows 환경에 최적화되어 있고, 강력한 IDE와 디버거가 통합되어 있습니다.
- MinGW(Minimalist GNU for Windows—Windows에서 쓰는 GCC 툴체인)도 사용할 수 있지만, Windows API 사용 시 제약이 있을 수 있습니다. 선택 기준: Windows 전용 앱·DirectX·MFC 등을 쓸 계획이면 MSVC가 유리하고, Linux와 동일한 툴체인으로 개발하거나 CI에서 같은 g++로 빌드하려면 MinGW가 편할 수 있습니다.
macOS 사용자:
- Clang을 추천합니다. macOS의 기본 컴파일러로, Xcode와 통합되어 있습니다.
Linux 사용자:
- GCC를 추천합니다. 대부분의 Linux 배포판에 기본으로 포함되어 있고, 서버 환경에서 가장 안정적입니다.
4. Windows 환경 구축
Windows에서는 세 가지 방법으로 C++ 개발 환경을 구축할 수 있습니다. 용량, 목적에 따라 선택하세요.
방법 1: Visual Studio (MSVC) - 권장
Visual Studio는 Windows에서 가장 강력한 C++ 개발 도구입니다. IDE, 컴파일러, 디버거가 모두 통합되어 있어 초보자도 쉽게 시작할 수 있습니다.
설치 과정 (단계별)
1단계: 다운로드
- Visual Studio 공식 사이트 접속
- Community Edition 다운로드 (무료, 개인·소규모 팀용)
- 설치 프로그램(
VisualStudioSetup.exe) 실행
2단계: 워크로드 선택
- 설치 화면에서 “C++를 사용한 데스크톱 개발” 워크로드 체크
- 오른쪽 설치 세부 정보에서 필요한 항목 확인:
- MSVC v143 - VS 2022 C++ x64/x86 빌드 도구
- Windows 10/11 SDK
- C++ CMake 도구 (선택, 나중에 CMake 사용 시 유용)
3단계: 설치 위치 (선택)
- 기본 경로:
C:\Program Files\Microsoft Visual Studio\2022\Community - 디스크 공간: 최소 7GB 이상 권장
4단계: 설치 완료 후 확인
- Developer Command Prompt for VS 2022 실행 (시작 메뉴 검색)
- 다음 명령어로 확인:
cl
예상 출력 (버전에 따라 다름):
Microsoft (R) C/C++ Optimizing Compiler Version 19.xx.xxxxx for x64
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
5단계: Hello World 테스트
cd %USERPROFILE%\Desktop
echo #include ^<iostream^> > hello.cpp
echo int main() { std::cout ^<^< "Hello!" ^<^< std::endl; return 0; } >> hello.cpp
cl /EHsc hello.cpp
hello.exe
장점:
- 강력한 IDE와 디버거
- Windows API 완벽 지원
- 초보자에게 친절한 UI
단점:
- 설치 용량이 큼 (약 7GB)
- Windows 전용
방법 2: MinGW (GCC) - 가벼운 대안
Visual Studio가 부담스럽다면 MinGW를 사용할 수 있습니다. Linux의 GCC를 Windows에 이식한 버전으로, 가볍고 빠릅니다. MSYS2를 통해 설치하는 것이 가장 권장됩니다.
MSYS2를 이용한 설치 (완전 가이드)
1단계: MSYS2 다운로드 및 설치
- MSYS2 공식 사이트에서 설치 프로그램 다운로드
msys2-x86_64-xxxxxxxx.exe실행- 설치 경로: 기본
C:\msys64(변경 가능) - 설치 완료 후 “Run MSYS2 now” 체크 후 종료
2단계: 패키지 데이터베이스 업데이트
MSYS2 터미널이 열리면:
pacman -Syu
- “프로세스를 종료할 것인가?” 묻는 창이 나오면 Y 입력 후 Enter
- 터미널이 종료되면 다시 MSYS2 터미널을 실행하고 한 번 더:
pacman -Syu
3단계: MinGW-w64 GCC 설치
pacman -S mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc: 64비트 Windows용 GCC- 32비트가 필요하면
mingw-w64-i686-gcc사용
4단계: PATH 환경 변수 추가
-
방법 A (권장):
C:\msys64\mingw64\bin을 시스템 PATH에 추가- Windows 키 + R →
sysdm.cpl입력 → Enter - “고급” 탭 → “환경 변수”
- “시스템 변수” 또는 “사용자 변수”에서
Path선택 → “편집” - “새로 만들기” →
C:\msys64\mingw64\bin입력 - 확인 후 모든 터미널/명령 프롬프트를 닫고 새로 열기
- Windows 키 + R →
-
방법 B: MSYS2 MinGW 64-bit 터미널 사용
- 시작 메뉴에서 “MSYS2 MinGW 64-bit” 실행
- 이 터미널에서는 PATH가 자동 설정됨
5단계: 설치 확인
새 명령 프롬프트(CMD) 또는 PowerShell에서:
g++ --version
예상 출력:
g++ (Rev1, Built by MSYS2 project) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
6단계: 추가 도구 (선택)
디버거, make 등이 필요하면:
pacman -S mingw-w64-x86_64-gdb mingw-w64-x86_64-make
장점:
- 가볍고 빠른 설치 (수백 MB)
- Linux와 동일한 명령어 사용
- 크로스 플랫폼 개발에 유리
단점:
- IDE가 별도로 필요
- Windows API 사용 시 제약
방법 3: WSL - 리눅스 환경 그대로 사용
Windows 10/11에서는 WSL(Windows Subsystem for Linux)을 통해 Ubuntu 등 Linux 배포판을 설치하고, 그 안에서 g++을 사용할 수 있습니다.
1단계: WSL 설치
PowerShell(관리자 권한)에서:
wsl --install
- 재부팅 후 Ubuntu가 설치됨
- 사용자 이름과 비밀번호 설정
2단계: Ubuntu에서 build-essential 설치
sudo apt update
sudo apt install build-essential
g++ --version
이후 Linux 환경 구축 섹션과 동일하게 사용하면 됩니다. VS Code의 Remote - WSL 확장으로 Windows에서 편집하면서 WSL에서 빌드하는 워크플로우도 가능합니다.
5. macOS 환경 구축
macOS에서는 Apple이 제공하는 Clang 컴파일러를 사용합니다. Xcode Command Line Tools만 설치하면 되므로 매우 간단합니다.
방법 1: Xcode Command Line Tools만 설치 (권장)
전체 Xcode(10GB 이상) 없이 컴파일러만 설치하는 방법입니다.
1단계: 설치 명령 실행
터미널을 열고:
xcode-select --install
2단계: 팝업 창에서 “설치” 클릭
- “명령어 라인 개발자 도구를 설치하시겠습니까?” 창이 뜹니다
- “설치” 버튼 클릭
- 라이선스 동의 후 설치 진행 (수 분 소요)
3단계: 설치 확인
clang++ --version
예상 출력:
Apple clang version 15.0.0 (clang-1500.0.40.1)
Target: arm64-apple-darwin23.0.0
4단계: g++ 심볼릭 링크 확인
g++ --version
macOS에서는 g++이 Clang을 가리킵니다. 동일한 출력이 나오면 정상입니다.
방법 2: Xcode 전체 설치
iOS/macOS 앱 개발을 할 계획이면 Xcode 전체를 설치할 수 있습니다.
1단계: Mac App Store에서 “Xcode” 검색 후 설치 (약 12GB)
2단계: Xcode를 한 번 실행해 추가 구성 요소 설치
3단계: 명령줄 도구 경로 설정
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
방법 3: Homebrew로 GCC 설치 (선택)
진짜 GCC가 필요하면 Homebrew로 설치할 수 있습니다.
brew install gcc
설치 후 g++-13(버전에 따라 다름)처럼 버전이 붙은 명령어로 사용합니다. 기본 g++은 여전히 Clang을 가리킵니다.
특징:
- 설치가 매우 간단함
- macOS에 최적화되어 있음
- 빠른 컴파일 속도
- 친절한 에러 메시지
6. Linux 환경 구축
Linux는 배포판에 따라 설치 방법이 조금씩 다릅니다. 대부분의 경우 GCC 컴파일러를 사용하며, 패키지 매니저를 통해 쉽게 설치할 수 있습니다.
Ubuntu / Debian 계열
가장 많이 사용되는 배포판입니다. build-essential 패키지에는 g++, gcc, make, libc-dev 등이 포함되어 있어, 한 번 설치하면 컴파일과 링킹에 필요한 기본 도구가 모두 준비됩니다.
완전 설치 가이드:
# 1. 패키지 목록 업데이트 (권장)
sudo apt update
# 2. 빌드 도구 설치
sudo apt install build-essential
# 3. 설치 확인
g++ --version
gcc --version
make --version
추가 도구 (선택):
# GDB 디버거
sudo apt install gdb
# CMake (빌드 시스템)
sudo apt install cmake
# C++17 이상을 위한 최신 GCC (Ubuntu 22.04+)
sudo apt install g++-12
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
Fedora / RHEL / CentOS 계열
# Fedora / RHEL 8+
sudo dnf groupinstall "Development Tools"
sudo dnf install gcc-c++
g++ --version
# RHEL 7 / CentOS 7
sudo yum groupinstall "Development Tools"
sudo yum install gcc-c++
Arch Linux
sudo pacman -S base-devel
g++ --version
base-devel에는 gcc, make, gdb 등이 포함됩니다.
openSUSE
sudo zypper install -t pattern devel_basis
g++ --version
Alpine Linux (Docker 등 경량 환경)
apk add build-base
g++ --version
설치 확인 체크리스트
설치가 완료되면 다음을 확인하세요:
# 컴파일러 버전
g++ --version
# 링커 확인
ld --version
# make 확인
make --version
7. 첫 프로그램 실행
이제 개발 환경이 준비되었으니, 전통적인 “Hello, World!” 프로그램을 작성하고 실행해보겠습니다.
소스 코드 작성
텍스트 편집기(메모장, VS Code 등)를 열고 hello.cpp 파일을 생성한 후 다음 코드를 입력합니다:
// 복사해 붙여넣은 뒤: g++ hello.cpp -o hello && ./hello (Windows MinGW/macOS/Linux)
#include <iostream>
int main() {
std::cout << "Hello, C++!" << std::endl;
return 0;
}
코드 설명 (한 줄씩 이해하기):
#include <iostream>: 입출력 기능을 사용하기 위한 헤더 파일입니다. 정의를 풀어 쓰면 “헤더”는 “미리 만들어 둔 선언·정의를 불러와 쓰기 위한 파일”입니다.int main(): 프로그램의 시작점입니다. 모든 C++ 프로그램은 main 함수부터 실행됩니다. 비유하면 건물의 정문처럼, 실행 시 제일 먼저 들어가는 곳입니다.std::cout: 화면에 텍스트를 출력하는 객체입니다.std는 표준 라이브러리가 사는 “네임스페이스” 이름입니다.return 0: 프로그램이 정상적으로 종료되었음을 운영체제에 알립니다. 0은 “에러 없이 끝났다”는 관례적인 값입니다.
한 줄 더: 출력 끝에 std::endl을 쓰면 줄바꿈과 함께 버퍼를 비우는(flush) 효과가 있습니다. 반복문에서 수천 줄을 출력할 때는 "\n"만 쓰는 편이 더 빠를 수 있고, 로그처럼 “지금 당장 화면에 보여야 할 때”는 std::endl이 유리합니다.
C++ 표준 지정 (권장)
최신 문법을 사용하려면 표준을 명시하는 것이 좋습니다:
// C++17 예시: 구조화된 바인딩
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> m = {{"a", 1}, {"b", 2}};
for (const auto& [key, value] : m) {
std::cout << key << ": " << value << std::endl;
}
return 0;
}
컴파일 시 -std=c++17 옵션 사용:
g++ -std=c++17 hello.cpp -o hello
컴파일 및 실행
운영체제와 컴파일러에 따라 명령어가 다릅니다.
Windows (MSVC 사용 시):
Developer Command Prompt를 열고:
cl /EHsc hello.cpp
hello.exe
Windows (MinGW), macOS, Linux:
g++ hello.cpp -o hello
./hello
Windows CMD에서 실행 파일만 실행할 때는 .\hello.exe 또는 hello로 실행합니다.
옵션 설명:
-o hello: 생성할 실행 파일 이름을 hello로 지정-std=c++17: C++17 표준 사용 (권장)/EHsc(MSVC): C++ 예외 처리 활성화
실행 결과:
Hello, C++!
이 메시지가 출력되면 성공입니다. 축하합니다! C++ 개발 환경 구축이 완료되었습니다.
8. IDE 설정 (VS Code, Visual Studio)
컴파일러만으로도 개발이 가능하지만, IDE(통합 개발 환경)를 사용하면 코드 자동 완성, 디버깅, 빌드 자동화가 훨씬 편해집니다. 여기서는 VS Code와 Visual Studio의 C++ 환경 구축을 완전히 다룹니다.
VS Code C++ 환경 구축 (완전 가이드)
VS Code는 가볍고 확장 가능한 편집기로, C++ 확장을 설치하면 IntelliSense, 디버깅, 빌드 작업을 사용할 수 있습니다.
1단계: VS Code 설치
- VS Code 공식 사이트에서 다운로드
- Windows/macOS/Linux 모두 지원
2단계: C++ 확장 설치
- VS Code 실행 → 왼쪽 확장(Extensions) 아이콘 클릭 (또는
Ctrl+Shift+X/Cmd+Shift+X) - “C++” 검색 → Microsoft C/C++ 확장 설치
- C/C++ Extension Pack (선택)을 설치하면 디버거, CMake 도구가 함께 설치됨
3단계: 컴파일러 경로 설정
설치한 컴파일러 경로를 VS Code에 알려줘야 IntelliSense와 빌드가 동작합니다. Ctrl+Shift+P → “C/C++: Edit Configurations”로 c_cpp_properties.json을 편집합니다.
- Windows (MinGW):
compilerPath를C:/msys64/mingw64/bin/g++.exe,intelliSenseMode를windows-gcc-x64로 설정 - macOS / Linux:
compilerPath를/usr/bin/g++로 설정
4단계: 빌드 및 디버깅
프로젝트 폴더에 .vscode/tasks.json과 launch.json을 생성합니다. C++ Extension Pack 설치 시 “Run and Debug”에서 “C++ (GDB/LLDB)” 구성을 선택하면 기본 설정이 자동 생성됩니다. F5로 디버깅 시작 시 빌드 후 실행됩니다. 자세한 설정은 C++ 실전 가이드 #3: VS Code C++ 개발 환경 설정을 참고하세요.
Visual Studio IDE 사용법 (Windows)
Visual Studio를 설치했다면 별도 설정 없이 바로 C++ 프로젝트를 만들 수 있습니다. 파일 → 새로 만들기 → 프로젝트 → “콘솔 앱” 선택. 프로젝트 속성에서 C++ 언어 표준을 ISO C++17로 설정. Ctrl+Shift+B로 빌드, F5로 디버깅 시작.
IDE 선택 가이드
| 도구 | 장점 | 적합한 경우 |
|---|---|---|
| VS Code | 가벼움, 크로스 플랫폼, 확장성 | Linux/macOS 개발, 터미널 중심 워크플로우 |
| Visual Studio | 강력한 디버거, Windows API 완벽 지원 | Windows 전용 앱, 게임 개발 |
| CLion | CMake 네이티브, 리팩토링 | 대규모 프로젝트, CMake 기반 |
9. 빌드 도구 (Make, CMake 기본)
파일이 2~3개일 때는 g++ main.cpp utils.cpp -o app처럼 직접 컴파일해도 되지만, 파일이 늘어나면 빌드 도구가 필요합니다.
Make 기초 (Linux/macOS)
Makefile은 어떤 파일을 어떻게 빌드할지 정의하는 스크립트입니다.
# Makefile
CXX = g++
CXXFLAGS = -std=c++17 -Wall -Wextra -g
app: main.cpp utils.cpp
$(CXX) $(CXXFLAGS) main.cpp utils.cpp -o app
clean:
rm -f app *.o
사용법: make (빌드), make clean (정리). 증분 빌드가 필요하면 .o 파일을 중간 타겟으로 추가합니다.
CMake 기초 (크로스 플랫폼)
CMake는 Windows, macOS, Linux 모두에서 동일한 설정으로 빌드할 수 있게 해 줍니다. 자세한 내용은 C++ 실전 가이드 #4: CMake 입문을 참고하세요.
최소 CMakeLists.txt:
cmake_minimum_required(VERSION 3.10)
project(MyApp)
set(CMAKE_CXX_STANDARD 17)
add_executable(myapp main.cpp utils.cpp)
빌드 절차:
mkdir build
cd build
cmake ..
cmake --build .
Windows (Visual Studio 생성):
cmake -G "Visual Studio 17 2022" -A x64 ..
cmake --build . --config Release
빌드 도구 선택 기준
| 상황 | 권장 도구 |
|---|---|
| 파일 1~3개 | g++ 직접 호출 |
| 파일 4~10개, Linux/macOS만 | Make |
| 크로스 플랫폼, 팀 개발 | CMake |
10. 간단한 빌드: 온라인 사이트 이용
로컬에 컴파일러를 설치하지 않고도, 웹 브라우저만으로 C++ 코드를 빌드하고 실행해 볼 수 있습니다.
추천 사이트별 특징
| 사이트 | 특징 | 용도 |
|---|---|---|
| Wandbox | GCC·Clang 여러 버전 선택 | 표준/버전별 동작 확인 |
| OnlineGDB | 온라인 디버깅 지원 | 버그 추적 |
| cpp.sh | 가입 없이 즉시 실행 | 빠른 문법 확인 |
| Compiler Explorer | 어셈블리 출력 확인 | 최적화·학습 |
이용 방법
- 사이트 접속 후 코드 입력 칸에
hello.cpp내용 붙여넣기 - Run 또는 실행 버튼 클릭
- 컴파일 후 실행 결과 확인
설치 없이 문법만 확인하거나 짧은 코드를 돌려보고 싶을 때 유용합니다. 본격적인 개발에는 로컬 환경 구축을 권장합니다.
11. 자주 겪는 에러와 해결법
문제 1: “g++을 찾을 수 없음” / “g++: command not found”
원인: 컴파일러 미설치 또는 PATH 미등록
해결:
- Windows (MinGW):
C:\msys64\mingw64\bin을 PATH에 추가 - macOS:
xcode-select --install실행 - Linux:
sudo apt install build-essential(Ubuntu/Debian)
확인:
which g++ # macOS/Linux
where g++ # Windows CMD
문제 2: “iostream: No such file or directory”
원인: C++ 컴파일러가 아닌 C 컴파일러 사용, 또는 표준 헤더 경로 문제
해결:
# ❌ 잘못된 예: gcc로 C++ 컴파일
gcc hello.cpp -o hello
# ✅ 올바른 예: g++ 사용
g++ hello.cpp -o hello
# C++17 표준 명시 (헤더 경로 문제 시)
g++ -std=c++17 hello.cpp -o hello
문제 3: “cl 인식 안 됨” (Windows MSVC)
원인: 일반 CMD에서 MSVC 사용 시 환경 변수 미설정
해결:
- 방법 A: “Developer Command Prompt for VS” 실행
- 방법 B: 일반 CMD에서 vcvarsall 실행 후 사용:
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
cl /EHsc hello.cpp
문제 4: “Permission denied” (Linux/macOS)
원인: 실행 파일에 실행 권한 없음
해결:
chmod +x hello
./hello
또는 ./hello로 실행하면 됩니다 (현재 디렉토리의 실행 파일은 ./를 붙여 실행).
문제 5: “undefined reference to …”
원인: 링크 단계에서 라이브러리 또는 객체 파일을 찾지 못함
해결:
# 여러 파일 컴파일 시: 모든 .cpp 파일을 나열
g++ main.cpp utils.cpp -o hello
# 라이브러리 링크 시: -l 옵션 사용
g++ main.cpp -o hello -lpthread
문제 6: “multiple definition of …”
원인: 헤더에 함수 정의를 넣어 두고 여러 .cpp에서 include
해결: 헤더에는 선언만, 구현은 .cpp에 두기. 또는 inline 사용.
문제 7: MSYS2에서 “pacman: command not found”
원인: MSYS2가 아닌 일반 CMD에서 pacman 실행
해결: “MSYS2 MSYS” 또는 “MSYS2 MinGW 64-bit” 터미널에서 실행하세요.
문제 8: “cannot find -lstdc++”
원인: C++ 표준 라이브러리 링커 경로 문제 (드물게 발생)
해결:
# GCC 설치 확인
g++ -print-search-dirs
# 또는
sudo apt install libstdc++-12-dev # Ubuntu
문제 9: “segmentation fault” / “Segmentation fault (core dumped)”
원인: 잘못된 메모리 접근 (널 포인터 역참조, 배열 범위 초과 등). 해결: g++ -g -O0로 심볼 포함 빌드 후 gdb ./hello로 디버깅. bt 명령으로 백트레이스 확인.
문제 10: “fatal error: ‘bits/stdc++.h’: No such file or directory”
원인: GCC 전용 비표준 헤더. Windows MinGW, Clang, MSVC에서는 지원되지 않음
해결:
// ❌ 비표준: #include <bits/stdc++.h>
// ✅ 표준 헤더만 사용 (권장)
#include <iostream>
#include <vector>
#include <algorithm>
문제 11: “C++17 requires …” / “this feature requires C++17”
원인: C++ 표준 옵션 미지정. 해결: g++ -std=c++17 또는 MSVC cl /std:c++17 사용.
문제 12: “Windows에서 한글 출력이 깨져요”
원인: 콘솔 코드 페이지와 소스 인코딩 불일치
해결:
// Windows에서 UTF-8 출력 설정
#ifdef _WIN32
#include <windows.h>
#endif
int main() {
#ifdef _WIN32
SetConsoleOutputCP(65001); // UTF-8
#endif
std::cout << "한글 출력" << std::endl;
return 0;
}
또는 소스 파일을 UTF-8 BOM으로 저장하고, MinGW/MSVC에서 UTF-8 옵션 사용.
문제 13: “libgcc_s_seh-1.dll을 찾을 수 없습니다” (Windows MinGW)
원인: MinGW 런타임 DLL이 실행 파일과 같은 위치에 없음. 해결: g++ -static-libgcc -static-libstdc++로 정적 링크하거나, C:\msys64\mingw64\bin을 PATH에 추가.
12. 모범 사례 (Best Practices)
환경 구축 시
- 컴파일러 버전 고정:
g++-12처럼 특정 버전을 명시하면 CI와 로컬이 동일합니다. - PATH에 공백 제거:
C:\Program Files\...경로는 문제를 일으킬 수 있으므로, MSYS2는C:\msys64처럼 짧은 경로 권장. - 환경 변수 검증: 새 터미널에서
g++ --version으로 확인 후 작업 시작.
코드 작성 시
- C++ 표준 명시:
-std=c++17또는-std=c++20을 항상 지정. 기본값은 컴파일러마다 다릅니다. - 경고 옵션 활성화:
-Wall -Wextra로 잠재적 버그를 조기 발견. - 헤더 가드 사용:
#pragma once또는#ifndef로 중복 포함 방지.
// myheader.h
#pragma once
// 또는
#ifndef MYHEADER_H
#define MYHEADER_H
// ...
#endif
프로젝트 구조 및 버전 관리
src/, include/ 폴더로 소스와 헤더를 분리하고, CMakeLists.txt 또는 Makefile은 반드시 버전 관리에 포함합니다. build/, *.o, *.exe, *.out은 .gitignore에 추가합니다.
13. 트러블슈팅 가이드
진단 플로우: “컴파일이 안 돼요”
flowchart TD
A[컴파일 에러 발생] --> B{g++/cl 인식되나?}
B -->|아니오| C[PATH 확인, 컴파일러 설치]
B -->|예| D{헤더 에러?}
D -->|iostream 등| E[g++ 사용, -std=c++17]
D -->|아니오| F{링크 에러?}
F -->|예| G[모든 .cpp 나열, -l 옵션]
F -->|아니오| H[에러 메시지 분석]
단계별 확인 체크리스트
1단계: 컴파일러 설치 여부
g++ --version # 또는 clang++ --version, cl (MSVC)
2단계: 현재 디렉토리와 파일 확인
pwd
ls -la hello.cpp # macOS/Linux
dir hello.cpp # Windows
3단계: 파일 인코딩
- UTF-8 BOM 없이 저장
- Windows 메모장에서 저장 시 “UTF-8” 선택
4단계: 에러 메시지 전체 확인
- 첫 번째 에러부터 해결 (이후 에러는 연쇄 반응일 수 있음)
- “error:“와 “warning:” 구분
플랫폼별 자주 나오는 이슈
| 플랫폼 | 이슈 | 해결 |
|---|---|---|
| Windows | PATH에 공백/한글 경로 | 짧은 경로 사용, MSYS2 기본 경로 권장 |
| macOS | ”xcode-select” 오류 | sudo xcode-select --reset |
| Linux | 권한 부족 | sudo로 설치, 실행 파일은 chmod +x |
14. 프로덕션 환경 구축 팁
CI/CD에서 C++ 빌드 (GitHub Actions 예시)
Ubuntu: actions/checkout 후 sudo apt install -y build-essential cmake, g++ -std=c++17 -O2 -Wall -Wextra src/*.cpp -o myapp 실행.
Windows MSVC: microsoft/setup-msbuild 사용 후 msbuild MyProject.sln /p:Configuration=Release.
Windows MinGW: msys2/setup-msys2로 mingw-w64-x86_64-gcc 설치 후 g++ -std=c++17 -O2 src/*.cpp -o myapp.exe.
Docker로 빌드 환경 고정
# Dockerfile
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y build-essential cmake
WORKDIR /app
COPY . .
RUN g++ -std=c++17 -O2 -o myapp src/*.cpp
CMD ["./myapp"]
프로덕션 빌드 옵션 권장
# 디버그 빌드 (개발 시)
g++ -std=c++17 -g -O0 -Wall -Wextra -o myapp_debug src/*.cpp
# 릴리스 빌드 (배포 시)
g++ -std=c++17 -O3 -DNDEBUG -Wall -Wextra -o myapp_release src/*.cpp
-O3: 최대 최적화-DNDEBUG: assert 비활성화-Wall -Wextra: 경고 활성화 (버그 조기 발견)
환경 구축 체크리스트
- 컴파일러 버전 고정 (CI와 로컬 동일)
- C++ 표준 명시 (
-std=c++17등) - 경고 옵션 활성화 (
-Wall -Wextra) - CMake 또는 빌드 스크립트로 재현 가능한 빌드
- Docker 또는 CI로 “깨끗한 환경”에서 빌드 검증
프로덕션 빌드 패턴
패턴 1: 다중 구성 빌드 (Debug/Release)
# Debug: 심볼 포함 | Release: 최적화
cmake -B build-debug -DCMAKE_BUILD_TYPE=Debug
cmake -B build-release -DCMAKE_BUILD_TYPE=Release
cmake --build build-release
패턴 2: Docker 멀티 스테이지 빌드 (경량 배포)
FROM ubuntu:22.04 AS builder
RUN apt-get update && apt-get install -y build-essential cmake
WORKDIR /src
COPY . .
RUN cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build
FROM ubuntu:22.04
COPY --from=builder /src/build/myapp /usr/local/bin/
CMD ["myapp"]
패턴 3: 컴파일러 버전 고정
export CXX=g++-12 # CI와 로컬 동일 버전 사용
cmake -B build && cmake --build build
CI와 로컬에서 동일한 컴파일러 버전을 쓰면 “로컬에서는 되는데 CI에서만 실패” 문제를 줄일 수 있습니다.
같이 보면 좋은 글 (내부 링크)
이 주제와 연결되는 다른 글입니다.
- C++ 컴파일러 뭘 쓸까? GCC vs Clang vs MSVC 차이·선택 가이드
- C++ 컴파일러 비교 | GCC vs Clang vs MSVC, 어떤 걸 써야 할까?
- VS Code C++ 설정 | IntelliSense·빌드·디버깅
이 글에서 다루는 키워드 (관련 검색어)
C++ 개발 환경, C++ 컴파일러 설치, Windows C++ 설정, MinGW 설치, Visual Studio C++, macOS C++ 개발, Linux g++ 설치, Hello World C++, C++ 첫 프로그램, 온라인 C++ 컴파일, g++ 인식 안됨, iostream not found 등으로 검색하시면 이 글이 도움이 됩니다.
자주 묻는 질문 (FAQ)
C++ 컴파일러는 어떤 것을 설치해야 하나요?
운영체제에 따라 다릅니다. Windows는 Visual Studio(MSVC) 또는 MinGW(GCC), macOS는 Xcode Command Line Tools(Clang), Linux는 GCC를 권장합니다. 각 컴파일러의 장단점은 본문의 “컴파일러 선택 가이드” 섹션을 참고하세요.
Visual Studio와 VS Code의 차이는 무엇인가요?
Visual Studio는 Windows 전용 통합 개발 환경(IDE)으로 컴파일러(MSVC)가 포함되어 있습니다. VS Code는 가벼운 코드 편집기로 별도로 컴파일러를 설치해야 합니다. 초보자는 Visual Studio가 더 쉽고, 크로스 플랫폼 개발자는 VS Code가 더 유연합니다.
컴파일러 설치 없이 C++을 실행할 수 있나요?
네, 온라인 컴파일러를 사용하면 됩니다. Wandbox, OnlineGDB, cpp.sh 같은 사이트에서 브라우저만으로 C++ 코드를 작성하고 실행할 수 있습니다. 하지만 본격적인 프로젝트 개발에는 로컬 환경 구축이 필수입니다.
g++ 명령어가 인식되지 않아요.
컴파일러가 제대로 설치되지 않았거나, 환경 변수 PATH에 컴파일러 경로가 추가되지 않은 경우입니다. Windows(MinGW)는 C:\msys64\mingw64\bin을 PATH에 추가하고, macOS/Linux는 which g++ 명령으로 설치 여부를 확인하세요.
첫 프로그램 컴파일 시 에러가 나요.
가장 흔한 원인은 1) 파일 이름 오타 (hello.cpp인지 확인), 2) 문법 오류 (세미콜론 누락 등), 3) 컴파일러 경로 문제입니다. 에러 메시지를 자세히 읽고, 본문의 자주 겪는 에러 섹션을 참고하세요.
macOS에서 g++이 Clang을 가리키는 이유는?
Apple이 GCC 대신 Clang을 기본 컴파일러로 채택했습니다. g++은 Clang을 가리키는 심볼릭 링크입니다. 대부분의 C++ 코드는 Clang으로 문제없이 컴파일됩니다. 진짜 GCC가 필요하면 Homebrew로 별도 설치할 수 있습니다.
마무리
핵심 요약
이 글에서 배운 내용을 정리하겠습니다:
✅ Windows 사용자: Visual Studio(MSVC) 또는 MinGW(GCC)를 설치합니다. Visual Studio가 더 강력하지만, 가볍게 시작하려면 MinGW도 좋은 선택입니다.
✅ macOS 사용자: Xcode Command Line Tools를 설치하면 Clang 컴파일러를 사용할 수 있습니다.
✅ Linux 사용자: build-essential 패키지를 설치하면 GCC 컴파일러와 필요한 모든 빌드 도구가 설치됩니다.
✅ 기본 명령어: g++ hello.cpp -o hello로 컴파일하고, ./hello로 실행합니다.
✅ 문제 해결: 자주 겪는 에러와 트러블슈팅 섹션을 참고하세요.
✅ 프로덕션: CI/CD, Docker, 빌드 옵션은 프로덕션 환경 구축 팁을 참고하세요.
한 줄 요약: OS별로 g++/Clang/MSVC 중 하나만 설치해 터미널에서 g++ hello.cpp -o hello로 빌드·실행하면 됩니다. 다음으로 컴파일러 비교(#2)를 읽어보면 좋습니다.
다음 글
개발 환경 구축이 완료되었다면, 이제 컴파일러의 동작 원리와 각 컴파일러의 차이점을 이해할 차례입니다.
다음 글: C++ 실전 가이드 #2: 컴파일러 비교 - GCC, Clang, MSVC의 특징과 선택 가이드
관련 글
- C++ 컴파일러 비교 | GCC vs Clang vs MSVC, 어떤 걸 써야 할까?
- C++ 컴파일러 뭘 쓸까? GCC vs Clang vs MSVC 차이·선택 가이드
- C++ 컴파일러 최적화 | PGO·LTO로
- C++ 멀티 컴파일러 전략과 CI/CD 파이프라인 구축 | 실무 가이드
- C++ 디버깅 실전 가이드 | gdb, LLDB, Visual Studio 완벽 활용