확인 : 인터럽트 / 예외 포착


33

MinGW 배포판에서 Make를 사용하고 있습니다. 항상 작동했지만 최근에 다음과 같은 오류가 발생했습니다.

> make clean
make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x0040b0ac)

그리고 각 부분은 다음과 같습니다.

clean:
    del /S /Q *.o > nul
    del /S /Q *.cy.c > nul
    del /S /Q *.pyc > nul
    del /S /Q *.pyo > nul
    if EXIST build (rmdir /S /Q dist > nul)

나는 이것을 일으키는 원인을 모른다. 특히 항상 완벽하게 작동했기 때문입니다.


1
make를 업데이트 해 보셨습니까? gnu.org/software/make
Fabián Heredia Montiel

답변:


46

나는 예외도 받기 시작했다.

make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4227d3)

다른 이유가있을 수 있지만 PATH 변수에 괄호가 포함 된 경우이 문제가 분명히 발생 (, )그것이 승리 비스타 / 7처럼. 불행히도, Windows 용 GNU는 절망적으로 구식입니다.

make올바른 쉘을 사용하여 문제를 해결했습니다 .makefile 의 시작 부분에 다음 줄을 삽입하십시오.

SHELL=C:/Windows/System32/cmd.exe

훌륭한 솔루션,하지만 난 내 환경 변수에 괄호가없는이 작동하지 않는 이유를 알고하지 않습니다
forsubhi

1
PATH의 길이와도 관련이 있습니까? 필자의 경우 PATH에는 문제없이 많은 괄호가 이미 있습니다 (더 많은 것을 설치할 때까지). 의 모든 인스턴스 교체 C:\Program FilesC:\PROGRA~1C:\Program Files (x86)C:\PROGRA~2나를 위해 고정 문제. +1 :-)
Cameron

나는 또한이 문제를 가지고 있었고, 메이크업의 새로운 버전으로 전환 : equation.com/servlet/equation.cmd?fa=make -이 문제가 해결되지 않았지만, 더 나은 예외를 처리하고 무슨 일이 일어나고 있는지를 알려줍니다 : sh: C:\Program: No such file or directory입니다 SHELL변수를 전달하지 않으면 얻는 첫 번째 줄 . 기본적으로 PATH에있는 "Program Files"의 각 인스턴스에는 제대로 이스케이프되지 않은 공간이 있습니다 (만약 make와 관련하여). 경로의 길이가 아니라이 문제를 일으키는 공간입니다. 이것은 공백없이 매크로를 사용하여 고정시킨 이유를 설명합니다.
Johannes

이 솔루션은 저에게 효과적이었습니다.
Robert Stiffler 2016 년

8

Git의 bin 디렉토리를 PATH환경 변수에 추가했을 때 문제가 발생했습니다 . 그 이유는 Git이 MSYS 버전과 함께 제공되며 MinGW와 충돌하는 것 같습니다 (MSYS 및 / 또는 MinGW의 올바른 버전 일 때 충돌하지 않지만 추측 일뿐입니다).

따라서에 (기타) MSYS 배포가 없는지 확인하십시오 PATH.


1
bin 디렉토리의 Git 경로가 문제였습니다! 잘 했어 !
TridenT

3

Norbet P.의 답변에 추가하여 다음을 추가했습니다.

PATH=

내 Makefile 상단 에이 특정 문제가 해결되었습니다.


1
나는 -1을주지 않지만 이것은 끔찍한 나쁜 대답입니다. PATH 만 재설정 할 수는 없습니다 !!! 이것은 매우 나쁜 습관입니다! 때때로 프로그램 컴파일은 PATH의 정보에 따라 다릅니다.
양자 물리학 자


2

마지막 릴리스가 2006 년 11 월 26 일에 다시 게시 될 때까지 GnuWin을 사용했습니다 . 그것은 약간 불충분하며 위와 같은 문제를 일으켰습니다. SHELL = C : /Windows/System32/cmd.exe를 설정하면 일부 문제가 해결되지만 새 운영 체제에서 이러한 이전 코드를 실행하면 안전하지 않은 것으로 느껴집니다

MinGw는 더 안전한 내기입니다. MinGw는 "Minimalist GNU for Windows"의 약자이며 최신 버전이며 제조업체 및 기타 도구를 포함합니다.

http://sourceforge.net/projects/mingw/files/


1
질문을 읽었습니까?
orlp

1

Windows 오류 코드 0xC0000005는 액세스 위반 또는 세그먼트 오류를 ​​나타냅니다.

  • MinGW 설치가 손상 되었습니까?
  • 시스템이 올바르게 구성되어 있습니까? 최근에 시스템 설정이 변경 되었습니까?
  • 시스템에 하드웨어 문제가 있습니까? CHKDSK를 사용하여 하드 드라이브를 스캔하거나 Memtest86 + 와 같은 메모리 테스트를 수행해야 할 수도 있습니다 .

-1

컴파일 로그에서 Windows 플랫폼을 사용하고 있어도 "SHELL = sh"가 전달되고 있음을 알았습니다. 내 Makfile은 다음과 같습니다.

ifneq (, $ (findstring win, $ (RDI_PLATFORM))) SHELL = CMD endif

ifneq에 의견을 말하고 작동을 시작했습니다. 플랫폼이 올바르게 해석되지 않은 이유를 모르겠습니다.


1
이것은 원래 질문에 대한 답변 이 아닙니다 . 작성자의 의견을 비판하거나 설명을 요청하려면 게시물 아래에 댓글을 남겨주세요. 언제든지 자신의 게시물 에 댓글 수 있으며 평판 이 충분 하면 게시물댓글 수 있습니다 .
DavidPostill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.