Windows에서 make check가 안 될 때 해결 방법 (Error 127)
Pintos를 진행하게 되면 열심히 코드를 작성한 후 빌드를 끝낸 다음, 대망의 테스트를 하게 됩니다. 이때 make check를 쳤는데 에러가 나면서 테스트 시작조차 못하게 되면 정말 속상한데요. 이번 글에서는 제가 Pintos 테스트를 시작하기 위해 고군분투한 끝에 얻어낸 Windows 기준 make check 시 Error 127 해결방법을 공유드리고자 합니다.
에러 사유1 - pintos: not found
Error 127이 발생한 뒤, 해당 테스트에 대한 .error
파일이 생기는데요. 터미널에서 해당 파일을 Ctrl + 클릭으로 들어가보면 /bin/sh: 1: pintos: not found
라는 에러 메시지를 보실 수 있습니다. 이 에러는 pintos 실행 파일이 PATH에 등록되어 있지 않아 명령어로 인식되지 않기 때문에 발생합니다. 곧 터미널에 which pintos
를 쳤을 때 아무것도 뜨지 않는다면 PATH에 pintos 실행 파일이 등록되지 않은 것입니다.
이 문제는 pintos 실행 파일을 PATH에 추가함으로써 간단히 해결할 수 있는데요. 이를 영구적으로 프로젝트 PATH에 추가하기 위해서는 다음 과정을 따라하시면 됩니다.
(1) vim 에디터로 .bashrc 열기
먼저 터미널에서 cd ~
를 입력해 홈 디렉터리로 이동합니다. 이후 ls -a
를 통해 .bashrc(또는 .bash_profile)이 있는지 확인해 주세요. 해당 파일이 확인되었다면 vim .bashrc
명령어로 vim 에디터를 실행합니다.
(2) .bashrc 맨 밑에 프로젝트 utils를 PATH에 추가하기
에디터를 실행했다면 ↓ 또는 스크롤을 통해 맨 밑으로 이동해주세요. 이후 I를 눌러 끼워넣기 모드로 전환합니다. 그런데 만약 맨 밑에 source로 시작해서 .../activate로 끝나는 문장이 있다면 나중에 PATH 추가 후 변경 사항이 적용되지 않기 때문에 해당 줄을 통째로 지워 주세요. 이후, 본인 프로젝트에서 pintos 실행 파일이 위치한 utils 폴더 경로에 맞게 아래 명령어를 수정하여 .bashrc 맨 아래에 추가해 주세요.
# /본인 프로젝트 경로../utils
export PATH=$PATH:/workspaces/PintOS-USERPROG/pintos-kaist/utils
추가를 마쳤다면 esc → Shift + : → wq 입력 후 Enter를 눌러 변경사항을 저장하고 에디터를 종료 후 터미널로 빠져나옵니다.
(3) 변경 사항 적용하기
마지막으로 .bashrc의 스크립트 변경 사항을 적용하기 위해 터미널에 아래와 같이 입력해줍니다.
source .bashrc
입력 후 아무것도 뜨지 않았다면 잘 적용되었다고 볼 수 있는데요. 이후 which pintos
명령어를 통해 pintos의 경로가 표시된다면 PATH가 잘 추가된 것입니다.
이후 다시 프로젝트의 build 디렉터리로 돌아가 make check
를 통해 테스트가 잘 진행되는지 확인합니다.
에러 사유 2 - Python3\r: No such file or directory
저는 위와 같이 pintos를 PATH에 추가했음에도 동일한 Error 127이 발생하는 문제를 겪었는데요. 그래서 .error 파일을 살펴보니 이번에는 /usr/bin/env: ‘python3\r’: No such file or directory
라는 다른 에러 메시지로 바뀌어 있는 걸 확인할 수 있었습니다.
이 에러가 발생하는 원인은 다름아닌 악명 높은 CRLF 문제 때문인데요. 이전에 WebProxy 서버를 만들 때에도 동일한 문제가 발생하여 해결 방법을 공유한 적이 있었습니다. 쉽게말해 스크립트 파일이 Windows 스타일 개행인(CRLF, \r\n)으로 저장되어 있어서 리눅스 터미널에서 실행되지 않는 상황입니다.
리눅스에서는 \r이 명령어에 포함되어 인식되므로, 실제로는 python3
를 실행하지 못하게 됩니다. 그래서 이 문제를 해결하기 위해서는 pintos 스크립트에 대해 dos2unix
를 통해 줄바꿈 형식을 UNIX(LF)로 변경해줘야 합니다. 아래의 단계를 통해 줄바꿈 형식을 변경해 보시길 바랍니다.
(1) dos2unix 설치하기
터미널에 아래의 명령어를 입력해 dos2unix를 설치합니다.
sudo apt update && sudo apt install -y dos2unix
(2) CRLF 줄바꿈 형식을 LF로 변환하기
이후 아래의 명령어를 입력해 스크립트 파일의 줄바꿈을 리눅스에 맞게 변환해줍니다. 아래의 명령어에서 본인 프로젝트의 pintos 스크립트 실행 파일의 위치에 맞게 경로를 수정한 뒤, 터미널에 입력하고 엔터를 눌러 주세요.
# /본인 프로젝트 경로../utils/pintos
sudo dos2unix /workspaces/W09-11-PintOS/pintos-kaist/utils/pintos
이후 프로젝트의 build 디렉터리로 이동해 make check
를 실행하면, 테스트가 정상적으로 시작되는 것을 확인할 수 있습니다.
'크래프톤 정글 > Code 정글(C언어)' 카테고리의 다른 글
[Pintos] User Programs Part 2 전체적인 큰 그림 그리기 (0) | 2025.05.21 |
---|---|
[Pintos] User Programs Part1 구현하기 (프로세스 실행 및 인자 전달, 시스템 콜 및 사용자 포인터 검증, 프로세스 동기화 및 종료) (0) | 2025.05.20 |
[Pintos] 트러블슈팅: 기본 제공 함수에서 오류가 발생하는 문제 해결하기 (0) | 2025.05.17 |
[Pintos] User Programs Part1 전체적인 큰 그림 그리기 (0) | 2025.05.16 |
[Pintos] VSCode에서 코드 사이 여행하기 (소스코드 분석 단축키) (0) | 2025.05.16 |