Estou usando o Make da distribuição MinGW. Sempre funcionou, mas recentemente recebi o seguinte erro:
> make clean
make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x0040b0ac)
E a parte respectiva fica assim:
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)
Não tenho ideia do que causa isso. Especialmente porque sempre funcionou perfeitamente bem.
Respostas:
Eu estava começando a receber uma exceção também:
Pode ser um motivo diferente, mas este problema é aparentemente causado quando a variável PATH contém parênteses
(
,)
, como faz em Win Vista / 7. Infelizmente, o GNU disponível para Windows está irremediavelmente desatualizado.Meu problema foi corrigido forçando o
make
uso do shell correto: insira a seguinte linha no início do seu makefile.fonte
C:\Program Files
comC:\PROGRA~1
eC:\Program Files (x86)
comC:\PROGRA~2
corrigiu o problema para mim. +1 :-)sh: C:\Program: No such file or directory
é a primeira linha que recebo se não passar aSHELL
variável Basicamente, cada instância de "Arquivos de Programas" no PATH contém um espaço que não é escapado corretamente (no que diz respeito ao make). Não é o comprimento do caminho, mas os espaços que estão causando esse problema. Isso explica por que o uso de uma macro sem espaços a corrigiu.Eu tive esse problema quando adicionei o diretório bin do Git à
PATH
variável de ambiente. O motivo parece ser que o Git é fornecido com uma versão do MSYS e isso parece entrar em conflito com o MinGW (talvez não entre em conflito quando é a versão correta do MSYS e / ou MinGW, mas isso é apenas um palpite).Portanto, verifique se não há nenhuma (outra) distribuição MSYS no seu
PATH
.fonte
Além da resposta de Norbet P., achei que acrescentando:
para o topo do meu Makefile corrigiu esse problema em particular para mim.
fonte
Este
make
bug foi corrigido pelo menos em.
fonte
Usei o GnuWin até perceber que a última versão foi postada em 26 de novembro de 2006 . Isso é um pouco coxo e causou problemas como visto acima. Definir SHELL = C: /Windows/System32/cmd.exe resolve alguns problemas, mas a execução de código antigo em novos sistemas operacionais parece insegura
MinGw é uma aposta mais segura. MinGw é acrônimo para "Minimalist GNU for Windows" e está atualizado e inclui marcas e outras ferramentas
http://sourceforge.net/projects/mingw/files/
fonte
O código de erro do Windows
0xC0000005
indica uma violação de acesso ou falha de segmentação.fonte
Percebi nos meus logs de compilação que "SHELL = sh" estava sendo passado para ser feito, mesmo estando na plataforma Windows. Meu Makfile ficou assim:
ifneq (, $ (vitória da busca, $ (RDI_PLATFORM))) SHELL = endif CMD
Uma vez eu comentei o ifneq e o final começou a funcionar. Não sei por que a plataforma não foi interpretada corretamente.
fonte