2012-03-10 5 views
7

Tôi đang cố gắng tìm hiểu rất nhiều python trên cửa sổ và bao gồm cài đặt nhiều gói, tuy nhiên mọi lúc tôi gọi setup.py install python có vấn đề với -mno -cygwin cho gcc.Python: -mno -cygwin

Tôi đã đọc rất nhiều bài viết và có vẻ như họ muốn các gói riêng lẻ này chờ bản sửa lỗi trên bản dựng của riêng họ.

ai cũng có thể cung cấp cho tôi phiên bản gcc mà tôi có thể cài đặt mà vẫn hỗ trợ -mno-bănggwin để tôi có thể tiếp tục nghiên cứu các khu vực tôi muốn tập trung?

cảm ơn!

+1

Tùy chọn -mno-cygwin không được chấp nhận đã bị xóa trong gcc 4.7.0. Xem [câu hỏi này] (http://stackoverflow.com/questions/6034390/compiling-with-cython-and-mingw-produces-gcc-error-unrecognized-command-line-o) để biết thêm chi tiết. –

Trả lời

18

Tôi cũng gặp sự cố này và đây là lỗi trong mã Python. Cách duy nhất tôi tìm thấy để sửa chữa nó là chỉnh sửa tập tin C:\Python27\Lib\distutils\cygwinccompiler.py.

Trong tệp này, bạn phải xóa mọi lần xuất hiện của -mno-cygwin.

Cũng vậy với GCC được cài đặt thông qua MinGW.

+0

Chỉ cần làm rõ điều này, chỉ nên có bốn lần xuất hiện của nó, trong 'Mingw32CCompiler .__ init__'. Sửa chữa phải đáng tin cậy. – brianmearns

1

tôi đã cùng một vấn đề đã được cố định bằng cách thay thế các trường hợp của chuỗi "-mno-Cygwin" với "" trong C:\Python27\Lib\distutils\cygwinccompiler.py

tức

đang Original:

self.set_executables(compiler='gcc -mno-cygwin -O -Wall', 
         compiler_so='gcc -mno-cygwin -mdll -O -Wall', 
         compiler_cxx='g++ -mno-cygwin -O -Wall', 
         linker_exe='gcc -mno-cygwin', 
         linker_so='%s -mno-cygwin %s %s' 
            % (self.linker_dll, shared_option, 
             entry_point)) 

Mã được cập nhật:

self.set_executables(compiler='gcc "" -O -Wall', 
         compiler_so='gcc "" -mdll -O -Wall', 
         compiler_cxx='g++ "" -O -Wall', 
         linker_exe='gcc ""', 
         linker_so='%s "" %s %s' 
            % (self.linker_dll, shared_option, 
             entry_point)) 

Phiên bản trình biên dịch GCC nào bạn sử dụng? Bạn sẽ không gặp vấn đề này nếu bạn sử dụng GCC 3.4.4 nếu không bạn cần phải thay thế chuỗi "-mno-cygwin" bằng dấu ngoặc kép như đã đề cập ở trên, đặc biệt là cho GCC 4.3.7.