Appearance
문제 해결 (Troubleshooting)
이 문서는 실습 환경 구축 및 기초 터미널 사용(01~05) 과정에서 흔히 발생하는 문제와 그 해결 방법을 안내합니다.
Windows/WSL 설치 및 연결 문제
WSL 설치 실패 또는 오류 발생
- 증상:
wsl --install -d Ubuntu-24.04실행 시 설치가 멈추거나 오류 발생 - 원인: PC의 가상화(Virtualization) 기능 비활성화 또는 Windows 관련 기능 누락
- 해결 방법:
- 작업 관리자(Ctrl+Shift+Esc) 성능 탭에서 가상화 사용 여부 확인
- 비활성화 시 PC 재부팅 후 BIOS/UEFI 설정에서 Intel VT-x 또는 AMD-V 기능 활성화
- Windows 'Windows 기능 켜기/끄기'에서 'Linux용 Windows 하위 시스템' 및 '가상 머신 플랫폼' 체크
- BIOS/UEFI 설정 변경이나 관리자 권한이 필요하면 혼자 진행하지 말고 보호자, 선생님, 관리자에게 먼저 확인
Ubuntu 24.04가 아닌 버전이 설치됨
- 증상:
cat /etc/os-release에26.04,22.04등이 보이거나, Store/"최신 버전" 안내를 따라 다른 Ubuntu가 설치됨 - 원인:
wsl --install만 실행하면 기본 배포판이 24.04가 아닐 수 있음 - 해결 방법:
- PowerShell에서 설치된 배포판 확인:powershell
wsl -l -v - 잘못 설치된 배포판 제거(이름은
wsl -l -v출력과 정확히 맞출 것. 예:Ubuntu,Ubuntu-26.04):powershellwsl --unregister <배포판이름> - Ubuntu 24.04 다시 설치:powershell
wsl --install -d Ubuntu-24.04 - 설치 후 Ubuntu 터미널에서
cat /etc/os-release로VERSION="24.04 LTS"확인 - 기존 배포판에 저장한 파일이 있으면 제거 전에 Windows로 복사해 둔다
- PowerShell에서 설치된 배포판 확인:
Ubuntu 24.04 또는 GCC 13 확인 불가
- 증상: WSL 설치 후 Ubuntu 버전이 24.04가 아니거나
g++ --version이 13.x가 아님 - 해결 방법:
- 버전 확인:
cat /etc/os-release - Ubuntu 24.04가 아닌 경우 위 "Ubuntu 24.04가 아닌 버전이 설치됨" 절차로 배포판을 교체한다. Microsoft Store에서 "Ubuntu 24.04"를 검색해 설치해도 된다
- Ubuntu 24.04인데 GCC만 13이 아닌 경우:bash
sudo apt update sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y sudo apt update sudo apt install gcc-13 g++-13 -y - 기본 컴파일러 설정 명령어:bash
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 --slave /usr/bin/g++ g++ /usr/bin/g++-13
- 버전 확인:
VS Code에서 WSL 환경 연결 실패
- 증상: VS Code 좌측 하단 영역 또는 명령 팔레트에서 WSL 접속 실패
- 원인: WSL 확장 프로그램 누락 또는 WSL 백그라운드 프로세스 오류
- 해결 방법:
- VS Code Extensions에서 'WSL' (Microsoft) 설치 확인
- PowerShell에서
wsl -l -v로 Ubuntu 상태 확인 - PowerShell에서
wsl --shutdown실행 후 VS Code에서 재연결 시도
macOS 환경 세팅 문제
Homebrew 설치 실패
- 증상: Homebrew 설치 명령어 실행 시 진행 불가
- 원인: Command Line Tools 미설치
- 해결 방법:
- 터미널에서
xcode-select --install실행 - Homebrew 설치 스크립트 재실행
- 스크립트 완료 후 화면의 "Next steps" 지시사항을 따라 환경 변수 추가 명령어 실행
- 터미널에서
g++-13 명령어 인식 불가 및 clang++ 혼동
- 증상:
g++-13명령어 오류 발생 또는g++ --version결과가 Apple clang으로 표기됨 - 원인: gcc@13 패키지 미설치 또는 명령어 혼용
- 해결 방법:
- Homebrew로 컴파일러 설치:
brew install gcc@13 - macOS에서는
g++대신 반드시g++-13명령어를 사용하여 컴파일:bashg++-13 main.cpp -std=gnu++20 -O2 -pipe -Wall -o main
- Homebrew로 컴파일러 설치:
g++-13 버전 확인은 되지만 컴파일 실패
- 증상:
g++-13 --version에는 13.x가 표시되지만<iostream>,wchar.h같은 시스템 헤더를 찾지 못하거나 컴파일 오류가 발생 - 가능한 원인:
- macOS를 업데이트한 뒤 이전 SDK를 기준으로 설치된 GCC 실행 파일이 남아 있음
- Homebrew
gcc@13패키지가 아닌 다른 패키지에서 설치된g++-13이 실행됨 - Xcode Command Line Tools 설치 상태가 현재 macOS 버전과 맞지 않음
- 설치 상태 확인:bash
brew list --versions gcc@13 which g++-13 xcode-select -p - 해결 방법:
xcode-select -p가 오류를 출력하면xcode-select --install을 실행하고 설치를 끝냅니다.- Homebrew 패키지 정보를 갱신합니다.bash
brew update brew list --versions gcc@13에 버전이 표시되면 패키지를 다시 설치합니다.bashbrew reinstall gcc@13- 앞의 명령에서 아무것도 출력되지 않았다면 패키지를 설치합니다.bash
brew install gcc@13 - 터미널을 닫았다가 다시 열고 설치 상태와 버전을 확인합니다.bash
brew list --versions gcc@13 which g++-13 g++-13 --version - 같은 코드를 다시 컴파일합니다.bash
g++-13 main.cpp -std=gnu++20 -O2 -pipe -Wall -o main
-isysroot 또는 임의의 헤더 경로를 컴파일 명령에 추가해서 우회하지 않습니다. 다시 설치한 뒤에도 실패하면 위 확인 명령 세 개의 결과와 컴파일 오류 메시지 전문을 질문 양식에 포함합니다.
터미널 및 파일 관리 문제
C++ 소스 파일을 직접 실행해서 발생하는 오류
- 증상:
./packet.cpp와 같이.cpp파일을 실행했을 때Permission denied가 출력됨chmod +x packet.cpp실행 후 다시 실행했을 때using: command not found,syntax error등이 출력됨
- 원인:
.cpp파일은 C++ 소스 코드이며 실행 파일이 아님. 실행 권한을 추가해도 셸이 C++ 코드를 명령어로 해석하므로 실행할 수 없음 - 해결 방법:
.cpp파일에chmod +x를 실행하지 않습니다.소스 파일을 컴파일하여 확장자가 없는 실행 파일을 만듭니다.
Windows/WSL:
bashg++ grader.cpp packet.cpp -std=gnu++20 -O2 -pipe -Wall -o packetmacOS:
bashg++-13 grader.cpp packet.cpp -std=gnu++20 -O2 -pipe -Wall -o packet컴파일 결과로 생성된
packet을 실행합니다.bash./packet
packet.cpp와 packet이 모두 보이면 packet.cpp는 수정하고 컴파일할 소스 파일이고, packet은 실행할 파일입니다. 일반 문제에서 -o main으로 컴파일했다면 ./main을 실행합니다.
Windows/WSL에서는 /mnt/c/...가 아닌 WSL 홈 경로(~)에서 실습합니다. WSL 홈 경로에서 다시 컴파일하면 생성된 실행 파일에 필요한 실행 권한이 자동으로 설정됩니다.
파일 또는 디렉토리 찾을 수 없음 (No such file or directory)
- 증상:
cd,ls, 컴파일 명령어 실행 시 파일 및 디렉토리 누락 오류 - 원인: 현재 작업 위치 불일치 또는 파일명 오타
- 해결 방법:
pwd명령어로 현재 경로 확인ls명령어로 목적지 파일 및 디렉토리 존재 유무 파악- 대소문자 구분 및 철자 확인
코드 컴파일 및 실행 문제
컴파일 명령 오류 (g++ 옵션 및 파일명 오타)
- 증상: 컴파일 과정에서 명령어 구문 오류 또는 파일 인식 실패
- 해결 방법:
- 지정된 컴파일 명령어를 정확하게 입력:
- Windows/WSL:
g++ main.cpp -std=gnu++20 -O2 -pipe -Wall -o main - macOS:
g++-13 main.cpp -std=gnu++20 -O2 -pipe -Wall -o main
- Windows/WSL:
main.cpp외의 파일 컴파일 시 입력 파일명과-o뒤의 출력 파일명을 실제 파일명에 맞게 변경
- 지정된 컴파일 명령어를 정확하게 입력:
파일 저장 누락으로 인한 이전 코드 실행
- 증상: 소스 코드를 변경했으나 실행 결과가 이전과 동일함
- 원인: VS Code 편집기에서 파일을 저장하지 않은 채 컴파일 수행
- 해결 방법:
- 단축키
Ctrl+S(macOS:Cmd+S)로 파일 저장 확인 - VS Code 탐색기 탭에서 파일명 우측의 흰색 원형 아이콘(미저장 표시) 유무 확인
- 단축키
프로그램 무한 루프 및 강제 종료 방법
- 증상:
./main실행 후 프로그램이 종료되지 않으며, 터미널 프롬프트가 나타나지 않음 - 원인: 코드 로직 오류로 인한 무한 루프 또는 입력 대기 상태 유지
- 해결 방법:
- 터미널 영역 클릭 후
Ctrl+C를 입력하여 실행 중인 프로세스 강제 종료 - 소스 코드 로직 수정 후 재저장 및 재컴파일
- 터미널 영역 클릭 후
스택 메모리 초과 (Stack Overflow)로 인한 비정상 종료
- 증상: 대용량 배열 선언이나 깊은 재귀 함수 호출 시
Segmentation fault메시지와 함께 프로그램 강제 종료 - 원인: 운영체제의 기본 스택 메모리 제한(일반적으로 8MB) 초과
- 해결 방법:
- 크기가 큰 배열(예:
int arr[10000000];등)은 함수 내부(지역 변수)가 아닌 외부의 전역 변수로 선언 - 터미널에서 스택 메모리 제한 임시 해제:
ulimit -s unlimited명령어 실행 후 프로그램 재실행
- 크기가 큰 배열(예:
기타 문제 질문 방법
문서에 안내된 내용으로 해결되지 않는 문제가 발생하면 아래 형식으로 질문합니다.
text
[이름]
[사용 환경]
예: Windows 11 + WSL Ubuntu 24.04 / macOS 14
[막힌 문서 위치]
예: 1. Windows에서 환경 설정하기 > GCC 설치하기
[내가 실행한 명령어]
복사해서 붙여넣기:
...
[터미널에 나온 오류 메시지 전문]
이미지가 아니라 텍스트로 복사:
...
[확인 명령어 결과]
Windows/WSL:
wsl -l -v
cat /etc/os-release
g++ --version
pwd
ls
macOS:
sw_vers
which g++-13
g++-13 --version
pwd
ls
[전체 화면 캡처]
VS Code 파일 목록, 터미널, 현재 폴더가 보이게 첨부
[코드 문제라면]
수정한 .cpp 파일 전체 내용