make: Interrupt / Exception tertangkap

33

Saya menggunakan Make dari distribusi MinGW. Itu selalu berhasil, tetapi baru-baru ini saya mendapatkan kesalahan berikut:

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

Dan bagian masing-masing terlihat seperti ini:

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)

Saya tidak tahu apa yang menyebabkan ini. Terutama karena selalu bekerja dengan sangat baik.

orlp
sumber
1
Sudahkah Anda mencoba memperbarui make? gnu.org/software/make
Fabián Heredia Montiel

Jawaban:

46

Saya mulai mendapatkan pengecualian juga:

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

Mungkin alasan yang berbeda, tapi masalah ini tampaknya disebabkan ketika variabel PATH berisi tanda kurung (, ), seperti halnya pada Win Vista / 7. Sayangnya, GNU yang tersedia untuk Windows sudah usang.

Masalah saya telah diperbaiki dengan memaksa makemenggunakan shell yang benar: masukkan baris berikut di awal makefile Anda.

SHELL=C:/Windows/System32/cmd.exe
Norbert P.
sumber
Solusi hebat, tapi saya tidak tahu mengapa itu tidak berfungsi, saya tidak memiliki tanda kurung di variabel Lingkungan saya
forsubhi
1
Mungkinkah terkait dengan panjang PATH juga? Dalam kasus saya, PATH saya sudah memiliki banyak tanda kurung tanpa masalah (sampai saya menginstal beberapa hal lagi); mengganti semua contoh C:\Program Filesdengan C:\PROGRA~1dan C:\Program Files (x86)dengan C:\PROGRA~2memperbaiki masalah untuk saya. +1 :-)
Cameron
Saya juga mengalami masalah ini, dan beralih ke versi make yang lebih baru: equation.com/servlet/equation.cmd?fa=make - Ini tidak memperbaiki masalah, tetapi ia menangani pengecualian dengan lebih baik dan memberi tahu Anda apa yang terjadi: sh: C:\Program: No such file or directoryadalah baris pertama yang saya dapatkan jika saya tidak lulus dalam SHELLvariabel. Pada dasarnya setiap instance dari "Program Files" pada PATH berisi ruang yang tidak lolos dengan benar (sejauh menyangkut). Itu bukan panjang jalan, tetapi ruang yang menyebabkan masalah ini. Ini menjelaskan mengapa menggunakan makro tanpa spasi memperbaikinya.
Johannes
Solusi ini berhasil untuk saya.
Robert Stiffler
8

Saya punya masalah ketika saya menambahkan direktori bin Git ke PATHvariabel lingkungan. Alasannya tampaknya karena Git hadir dengan versi MSYS dan yang tampaknya bertentangan dengan MinGW (mungkin tidak bertentangan ketika itu adalah versi MSYS dan / atau MinGW yang tepat tetapi itu hanya menebak).

Jadi pastikan tidak ada distribusi MSYS (lainnya) di blog Anda PATH.

Ignitor
sumber
1
Git path ke direktori bin adalah masalah bagi saya! Sudah selesai dilakukan dengan baik !
TridenT
3

Selanjutnya untuk jawaban Norbet P., saya menemukan bahwa menambahkan:

PATH=

ke bagian atas Makefile saya memperbaiki masalah khusus ini untuk saya.

Mark Tolley
sumber
1
Saya tidak memberi -1, tetapi ini adalah jawaban yang sangat buruk. Anda tidak bisa mengatur ulang PATH !!! ini praktik yang sangat buruk! beberapa kali kompilasi program tergantung pada informasi dalam PATH.
Fisikawan Kuantum
3

Ini makebug adalah tetap setidaknya di

GNU Make 3.82
Built for i686-pc-mingw32

.

Armali
sumber
Dari mana saya mendapatkan versi ini?
SHOUBHIK BOSE
1
IIRC, saya mendapatkannya dari sini .
Armali
2

Saya menggunakan GnuWin sampai saya menyadari rilis terakhir telah diposting kembali pada 26 November 2006 . Itu agak timpang, dan menyebabkan masalah seperti yang terlihat di atas. Pengaturan SHELL = C: /Windows/System32/cmd.exe memang memecahkan beberapa masalah tetapi menjalankan kode lama pada sistem operasi baru terasa tidak aman

MinGw adalah taruhan yang lebih aman. MinGw adalah akronim untuk "GNU Minimalis untuk Windows" dan terkini dan termasuk make dan alat lainnya

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

pengguna246954
sumber
1
Apakah Anda bahkan membaca pertanyaannya?
orlp
1

Kode kesalahan Windows 0xC0000005menunjukkan pelanggaran akses, atau kesalahan segmentasi.

  • Apakah instalasi MinGW Anda rusak?
  • Apakah sistem Anda dikonfigurasi dengan benar? Apakah ada pengaturan sistem yang diubah baru-baru ini?
  • Apakah ada masalah perangkat keras pada sistem Anda? Anda mungkin perlu memindai hard drive menggunakan CHKDSK atau melakukan tes memori seperti Memtest86 + .
bwDraco
sumber
-1

Saya perhatikan di kompilasi log saya bahwa "SHELL = sh" sedang dilewati untuk membuat, meskipun saya di platform windows. Makfile saya terlihat seperti ini:

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

Suatu ketika saya berkomentar ifneq dan mengakhirinya mulai bekerja. Tidak yakin mengapa platform tidak ditafsirkan dengan benar.

martinv
sumber
1
Ini bukan jawaban untuk pertanyaan awal. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka - Anda selalu dapat mengomentari posting Anda sendiri, dan begitu Anda memiliki reputasi yang cukup, Anda akan dapat mengomentari setiap posting .
DavidPostill