English

g++ — C++ 컴파일러

개발 / 빌드 / g++.html

빌드원문등록 2026-10-20T09:00:00+09:00

GCC의 C++ 프런트엔드로, C++ 소스를 실행 파일이나 목적 파일로 컴파일합니다.

기본 정보

명령어 이름g++
한 줄 소개GCC의 C++ 프런트엔드로, C++ 소스를 실행 파일이나 목적 파일로 컴파일합니다.
제공GCC (GNU Compiler Collection)
공식 문서https://gcc.gnu.org/onlinedocs/
지원 운영체제Linux, macOS, BSD, Windows(별도 설치)
설치 여부패키지 설치 필요 (build-essential/g++)
분류빌드·컴파일 (태그: 언어 툴체인 (태그: g++, C++, 컴파일, GCC))

이 명령어는 무엇인가?

g++은 C++ 소스를 기계어로 번역합니다. 전처리, 컴파일, 어셈블, 링크를 한 번에 수행하며 -c로 목적 파일만, -o로 출력 이름을 지정할 수 있습니다.

경고와 최적화 수준을 명시하는 것이 중요합니다. -Wall -Wextra로 문제를 조기에 잡고, 배포 빌드에서는 -O2와 디버그 심볼 제거 여부를 결정합니다. 라이브러리 순서는 링크 오류의 흔한 원인입니다.

어떤 문제를 해결하는가?

  • C++ 소스를 빠르게 컴파일해 동작을 확인할 때
  • 여러 소스를 목적 파일로 나눠 증분 빌드할 때
  • 경고 수준을 높여 잠재 버그를 찾을 때
  • 특정 표준(-std=c++20)으로 호환성을 검증할 때

주요 기능

단일 파일 빌드

소스 하나를 바로 실행 파일로 만듭니다.

  • 활용 상황: 예제나 소규모 도구를 시험할 때
  • 얻는 결과: 즉시 실행 가능한 바이너리가 생깁니다.
  • 제한 사항: 라이브러리 의존성은 자동 해결되지 않습니다.

경고와 표준 지정

-Wall -Wextra와 -std로 품질과 호환성을 맞춥니다.

  • 활용 상황: 이식성 있는 코드를 작성할 때
  • 얻는 결과: 문제를 컴파일 단계에서 조기에 발견합니다.
  • 제한 사항: 경고만으로는 빌드가 실패하지 않습니다(-Werror 필요).

목적 파일 분리

-c로 목적 파일을 만들고 마지막에 링크합니다.

  • 활용 상황: 대규모 프로젝트에서 증분 빌드를 할 때
  • 얻는 결과: 바뀐 파일만 다시 컴파일해 시간을 줄입니다.
  • 제한 사항: 링크 순서와 심볼 중복을 직접 관리해야 합니다.

설치 및 실행

설치 여부 확인

g++ --version

sudo apt install build-essential # Debian/Ubuntu sudo dnf install gcc-c++ # Fedora

실제 사용 예제

단일 파일 컴파일

경고를 켜고 실행 파일을 만듭니다.

g++ -Wall -Wextra -O2 -std=c++20 main.cpp -o app
./app

목적 파일 생성

컴파일만 수행하고 링크는 나중에 합니다.

g++ -c util.cpp -o util.o
g++ main.o util.o -o app

라이브러리 링크

별도 링크가 필요한 라이브러리를 연결합니다.

g++ calc.cpp -o calc -lm