gcc와 vs code를 사용하다가 갑작스럽게 동작이 안되거나 혹은 결과를 출력 못하는 현상을 겪을 수 있다. 이와 같은 현상은 주로 캐시파일이 쌓이다가 디스크 공간이 모자르게 되어서 발생된다. 필자는 아래와 같은 상황으로 문제 상황을 해결하였다.
디스크 공간을 확인하여 여유 공간이 충분한지 점검한다. 다음 명령어를 사용한다:
df -h
디스크가 넓어도 특정 파티션이 가득 차면 문제가 발생할 수 있다. /home, /tmp, /var 등의 파티션이 가득 찰 수 있다. 이를 확인하고 해결하기 위해 다음 단계를 수행한다:
디스크 파티션 확인
df -h
문제 파티션의 공간 확보
/tmp 파티션이 가득 차면, 임시 파일을 정리하거나 /tmp 디렉토리의 파일을 삭제한다.파일 시스템에는 파일 수와 크기에 대한 제한이 있을 수 있다. 예를 들어, ext4 파일 시스템은 특정 파일 수나 최대 파일 크기를 초과할 수 없다. 이를 해결하기 위해 다음 단계를 수행한다:
파일 시스템 확인
df -i
문제 해결
디스크 공간이 충분하더라도 권한 문제로 인해 컴파일이 실패할 수 있다. 필요한 디렉토리 또는 파일에 대한 권한이 부족할 수 있다. 이를 해결하기 위해 다음 단계를 수행한다:
권한 확인 및 수정
ls -l /path/to/working/directory
chmod u+w /path/to/working/directory
디스크에 물리적 오류가 있을 수 있다. 이런 경우, 디스크를 검사하고 수리해야 한다. 이를 위해 다음 명령어를 사용한다:
디스크 검사
sudo fsck /dev/sdX
/dev/sdX를 실제 디스크 장치로 변경하여 디스크 검사 및 수리를 시도한다.시스템에서 sudo 명령어를 사용할 수 없는 경우, 다음과 같은 방법으로 디스크 공간을 확보할 수 있다:
사용자 권한 내에서 파일 삭제
개인 홈 디렉토리(~) 또는 권한이 있는 디렉토리에서 불필요한 파일을 삭제하여 공간을 확보한다.
rm ~/Downloads/largefile.zip
임시 디렉토리 정리
/tmp 디렉토리의 경우, 사용자 권한으로 접근 가능한 파일을 삭제할 수 있다.
rm /tmp/yourfile.tmp
로그 파일 정리
사용자 디렉토리에서 생성된 로그 파일을 확인하고, 불필요한 로그 파일을 삭제한다.
rm ~/.cache/logs/*
사용자 환경에서 캐시 정리
패키지 관리자 캐시를 정리할 수 없을 때, 사용자가 접근 가능한 다른 캐시 디렉토리나 임시 파일을 정리한다.
rm -rf ~/.cache/*
외부 저장소 사용
큰 파일을 외부 저장소로 이동하여 디스크 공간을 확보한다.
mv ~/largefile /path/to/external/storage/
디스크 캐시나 임시 파일이 문제를 일으킬 수 있다. 이를 정리하여 공간을 확보한다. 다음 명령어를 사용한다:
임시 파일 정리
sudo apt-get clean
외부 저장소(USB 드라이브, 클라우드 저장소 등)에 접근할 수 있다면, 큰 파일을 그곳으로 이동한다. 이를 위해 다음 명령어를 사용한다:
mv ~/large-file /path/to/external/storage/
예를 들어, largefile.mp4를 /media/usb에 마운트된 USB 드라이브로 이동하려면 다음 명령어를 사용한다:
mv ~/Videos/largefile.mp4 /media/usb/
디스크 공간을 확보한 후, 다시 컴파일을 시도한다:
gcc -Wall -Wextra -Werror -o output ft_rev_params.c
ft_rev_params.c를 실제 소스 파일로, output을 원하는 실행 파일 이름으로 바꾼다.df -h로 디스크 공간 사용량을 확인한다.find, rm, du 명령어를 사용하여 불필요한 파일을 삭제한다.gcc로 컴파일을 다시 시도한다.위의 단계를 통해 gcc 컴파일 문제를 해결하고 디스크 공간을 효율적으로 관리할 수 있다. sudo 권한 없이도 가능한 파일 정리 방법을 활용하여 문제를 해결할 수 있다.
다만 sudo명령어를 사용하지 못하는 상황이나 제한이 있다면 디스크 파일의 임시파일과 캐시파일을 정리하는 것이 효과적일 수 있다
아래는 그 내용이다.
먼저, 오래된 파일을 찾아야 한다. 예를 들어, 7일 이상 사용되지 않은 파일을 찾으려면 다음 명령어를 사용한다:
find /tmp -type f -mtime +7
/tmp 디렉토리에서 7일 이상 수정되지 않은 파일들을 찾을 수 있다.-type f 옵션은 파일만 찾도록 설정한다.-mtime +7은 7일 이상 된 파일을 찾도록 한다.찾은 오래된 파일을 삭제하려면 -exec 옵션을 사용한다:
find /tmp -type f -mtime +7 -exec rm -f {} \;
/tmp 디렉토리에서 7일 이상 수정되지 않은 파일들을 자동으로 삭제할 수 있다.rm -f는 강제로 파일을 삭제하는 옵션이다.{}는 find 명령어에서 찾은 파일들을 가리킨다.\;는 명령어의 끝을 나타낸다.특정 확장자를 가진 임시 파일만 삭제하고 싶다면, 다음과 같은 명령어를 사용한다:
find /tmp -type f -name "*.log" -mtime +7 -exec rm -f {} \;
/tmp 디렉토리에서 7일 이상 된 .log 파일을 찾아 삭제할 수 있다.-name "*.log" 옵션을 사용하여 .log 확장자를 가진 파일만 찾는다.사용자 홈 디렉토리 내의 캐시 파일을 정리하여 공간을 확보할 수 있다:
find ~/.cache -type f -mtime +30 -exec rm -f {} \;
~/.cache)의 30일 이상 된 캐시 파일을 찾아 삭제할 수 있다.디스크 공간을 확보한 후, 다시 컴파일을 시도한다:
gcc -Wall -Wextra -Werror -o output ft_rev_params.c
ft_rev_params.c를 실제 소스 파일로, output을 원하는 실행 파일 이름으로 바꾼다.find /tmp -type f -mtime +7 명령어로 오래된 파일을 찾는다.find /tmp -type f -mtime +7 -exec rm -f {} \; 명령어로 파일을 삭제한다.find ~/.cache -type f -mtime +30 -exec rm -f {} \; 명령어로 오래된 캐시 파일을 삭제한다.gcc로 컴파일을 다시 시도한다.이 방법으로 디스크 공간을 효과적으로 정리하고 컴파일 문제를 해결할 수 있다.