g++ — C++ 컴파일러
개발 / 빌드 / g++.html
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