2011-12-20 34 views
5

Sau một số cơn đau và đau khổ, tôi đã cài đặt mọi thứ cần thiết để MinGW hoạt động trên máy tính không có trên mạng.MinGW "make" bắt đầu rất chậm

Nó hoạt động tốt trong vài ngày, nhưng bây giờ tôi gặp phải sự chậm trễ rất lâu trước khi bất cứ điều gì bắt đầu xảy ra sau khi tôi đưa ra lệnh "make" để xây dựng dự án của mình.

Tôi đã thử vô hiệu hóa mạng, như được đề xuất tại đây: Why is MinGW very slow? Nhưng điều đó không giúp ích gì.

Lưu ý rằng đó không phải là quá trình biên dịch/liên kết thực sự chậm, nhưng việc khởi động các quy trình đó dường như mất mãi mãi. 5-10 phút. Ngoại trừ nếu tôi chỉ làm nó, sau đó nó bắt đầu trong 10-30 giây.

Tôi biết, phải mất nhiều thời gian hơn để tải những băng đó lên Commodore, nhưng trong những năm qua tôi đã trở nên thiếu kiên nhẫn.

Bất kỳ ý tưởng nào?

+0

cố gắng kết nối máy chủ cấp phép cho một số trình biên dịch/chuỗi công cụ thương mại hoặc kết nối với máy chủ SVN để kiểm tra phiên bản mã hiện tại đang được biên dịch (gọi svn-version từ makefile) là nguyên nhân khiến 'make' mất nhiều thời gian trường hợp. –

+0

Cảm ơn! Thư mục không có bất kỳ thẻ svn nào cũng không sử dụng bất kỳ công cụ nào như vậy. Tôi hy vọng người khác có vấn đề đó và thấy rằng nhận xét hữu ích :) – 0xbaadf00d

+0

Bạn có chắc chắn 'make' đúng được gọi không? có thể bạn có 'make' khác trong đường dẫn tìm kiếm của mình? – user1071136

Trả lời

7

Hãy thử thực hiện make -r (không có quy tắc ngầm). Đối với tôi, đó là sự khác biệt giữa 30 giây và một phần nhỏ của giây đối với tệp cpp đơn lẻ.

Giải thích:

Tôi đã gặp vấn đề tương tự MinGW từ lâu rồi. Tôi đã sử dụng make -d để điều tra. Rõ ràng là make sử dụng hàng tỷ quy tắc ngầm cho mọi tệp phụ thuộc - nếu tệp của tôi bị xóa trên shared_ptr.hpp thì make được chọn cho shared_ptr.hpp (o | c | cc | v | f | r | .. và hàng tá các kết hợp khác). Tất nhiên những tập tin đó không tồn tại. Nó trông giống như kiểm tra thời gian mod file/tồn tại (khi nó không thực sự tồn tại) trên nền tảng Windows là chậm hơn rất nhiều so với trên Linux (bởi vì với Linux tôi đã không thấy bất kỳ sự khác biệt với/mà không cần -r chuyển đổi).