yapmak: Interrupt / Exception yakalandı


33

MinGW dağıtımından Make'ı kullanıyorum. Her zaman işe yaradı, ancak son zamanlarda aşağıdaki hatayı aldım:

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

Ve ilgili kısım şöyle görünür:

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)

Buna neyin sebep olduğu hakkında hiçbir fikrim yok. Özellikle de her zaman gayet iyi çalıştığı için.


1
Güncelleme yapmayı denediniz mi? gnu.org/software/make
Fabián Heredia Montiel 17

Yanıtlar:


46

Ben de bir istisna almaya başladım:

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

Farklı bir neden olabilir, ama YOL değişkeni parantez içerdiğinde bu sorunu olasılıkla kaynaklanır (, )bu Win Vista / 7 üzerinde yaptığı gibi. Ne yazık ki, Windows için kullanılabilir GNU umutsuzca eskidir.

Sorunum makedoğru kabuğu kullanmaya zorlanarak giderildi : make dosyasını başında aşağıdaki satırı ekleyin.

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

Harika bir çözüm, ancak neden işe yaramadığını bilmiyorum, Ortam değişkenlerimde parantezim yok
forsubhi

1
PATH'ın uzunluğu ile ilgili olabilir mi? Benim durumumda, PATH'mde zaten çok fazla parantez vardı - hiç sorun yaşamadan (biraz daha fazla şey yükleyene kadar); tüm örneklerini yerini C:\Program Filesile C:\PROGRA~1ve C:\Program Files (x86)ile C:\PROGRA~2benim için sabit bir sorun. +1 :-)
Cameron

Ben de bu sorunu vardı ve yapmak daha yeni bir sürüme geçiş: equation.com/servlet/equation.cmd?fa=make - Bu sorunu çözmek vermedi, ama daha iyi durum işleme ve neler olduğunu söyler: sh: C:\Program: No such file or directoryolduğunu SHELLDeğişkene geçemezsem ilk satırını alıyorum . Temel olarak, PATH üzerindeki her "Program Files" örneği, uygun bir şekilde kaçamayan bir boşluk içerir (duruma gelince). Yolun uzunluğu değil, bu soruna neden olan boşluklar. Bu, neden boşluk bırakmadan bir makro kullanmanın onu düzeltdiğini açıklar.
Johannes

Bu çözüm benim için çalıştı.
Robert Stiffler

8

Git'in bin dizinini PATHortam değişkenine eklediğimde bu sorunu yaşadım . Bunun nedeni Git'in MSYS sürümüyle birlikte geldiği ve MinGW ile çakıştığı görünüyor (belki de MSYS ve / veya MinGW'nin doğru sürümü olduğunda çakışmaz ama bu sadece tahmindir).

Bu nedenle, içinde hiçbir (diğer) MSYS dağıtımı olmadığından emin olun PATH.


1
Bin dizinine Git yolu benim için sorun oldu! Aferin !
TridenT

3

Norbet P.'nin cevabından başka, şunu ekledim:

PATH=

Makefile'imin tepesine, bu problemi benim için düzelttim.


1
-1 vermiyorum, ama bu çok kötü bir cevap. Sadece PATH'i sıfırlayamazsınız !!! bu çok kötü bir uygulamadır! bazı zamanlar program derlemesi PATH'deki bilgilere bağlıdır.
Kuantum Fizikçisi


2

Son yayınlanmanın 26 Kasım'da 2006'da geri gönderildiğini fark edene kadar GnuWin'i kullandım . Bu biraz topal ve yukarıda görüldüğü gibi sorunlara neden oldu. KABUK Ayarı = C: /Windows/System32/cmd.exe bazı sorunları çözüyor ancak eski işletim sistemlerinde yeni işletim sistemlerinde çalışmak güvensiz hissediyor

MinGw daha güvenli bir bahis. MinGw "Windows için Minimalist GNU" nun kısaltmasıdır ve günceldir ve marka ile diğer araçları içerir

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


1
Soruyu okudun mu bile?
orlp

1

Windows hata kodu 0xC0000005erişim ihlali veya segmentasyon hatası olduğunu gösterir.

  • MinGW kurulumunuz bozuk mu?
  • Sisteminiz uygun şekilde yapılandırılmış mı? Son zamanlarda herhangi bir sistem ayarı değişti mi?
  • Sisteminizde donanım sorunları var mı? Sabit sürücüyü CHKDSK kullanarak taramanız veya Memtest86 + gibi bir hafıza testi yapmanız gerekebilir .

-1

Derleme günlüklerimde Windows platformunda olsam bile "SHELL = sh" işleminin yapıldığını fark ettim. Makfile'im şuna benziyordu:

ifneq (, $ (bulma kazanç, $ (RDI_PLATFORM)))) SHELL = CMD endif

Bir kez ifneq 'i yorumladıktan sonra çalışmaya başladı. Platformun neden doğru yorumlanmadığından emin değilim.


1
Bu asıl sorunun cevabı değil . Bir yazarın açıklamasını eleştirmek veya talep etmek için, yazdıklarının altında bir yorum bırakın; istediğiniz zaman kendi yazılarınıza yorum yapabilirsiniz ve yeterli saygınlık elde ettiğinizde , herhangi bir yayına yorum yazabilirsiniz .
DavidPostill
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.