Compiling with cython and mingw produces gcc: error: unrecognized command line option '-mno-cygwin'

I'm trying to compile a python extension with cython in win 7 64-bit using mingw (64-bit).
I'm working with Python 2.6 (Active Python 2.6.6) and with the adequate distutils.cfg file (setting mingw as the compiler)

When executing

> C:\Python26\programas\Cython>python setup.py build_ext --inplace

I get an error saying that gcc has not an -mno-cygwin option:

> C:\Python26\programas\Cython>python setup.py build_ext --inplace
running build_ext
skipping 'hello2.c' Cython extension (up-to-date)
building 'hello2' extension
C:\mingw\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python26\include -IC:\Python26\PC -c hello2.c -o build\temp.win-amd64-2.6\Release\hello2.o
gcc: error: unrecognized command line option '-mno-cygwin'
error: command 'gcc' failed with exit status 1

gcc is:

C:\>gcc --version
gcc (GCC) 4.7.0 20110430 (experimental)
Copyright (C) 2011 Free Software Foundation, Inc.

How could I fix it?

62758 次浏览

It sounds like GCC 4.7.0 has finally removed the deprecated -mno-cygwin option, but distutils has not yet caught up with it. Either install a slightly older version of MinGW, or edit distutils\cygwinccompiler.py in your Python directory to remove all instances of -mno-cygwin.

在解决这些问题和我发现的下列问题的过程中,我用 this thread编写了一个菜谱。我在这里复制它,以防它可能对其他人有用:


使用 python 逐步编译64位 cython 扩展的方法 2.6.6 with mingw compiler in win 7 64-bit

安装 mingw 编译器
1)为64位编译安装 tdm64-gcc-4.5.2.exe

向 python 应用补丁
2) Modify python.h in C:\python26\include as indicated in Http://bugs.python.org/file12411/mingw-w64.patch

修改蒸馏酒
编辑2013: 注意: python 2.7.6和3.3.3-mno-cygwin 最终被删除,因此可以跳过步骤3

3)消除调用 gcc 中的所有参数-mno-cygwin Python 26 Lib distutils cygwinccompiler.py 中的 Mingw32c 编译器类
4)在同一个模块中,修改 get _ msvcr ()以返回一个空列表 而不是[‘ msvcr90’]当 msc _ ver = = ‘1500’。

Produce the libpython26.a file (not included in 64 bit python)
编辑2013: 通过从 Gohlke 下载并安装 libpython26.a,可以跳过以下步骤5-10。

5)从 mingw-w64-bin _ x86 _ 64-获取 gendef.exe Mingw _ 20101003 _ sezero. zip (gendef.exe 在 tmd64发行版中不可用 解决方案是从源代码编译 gendef...)
6)将 python26.dll (位于 C windows system 32)复制到用户 目录(C: Users myname)
7)使用以下连结生成 python26.def 档案:

Exe C: Users myname python26.dll

8)移动生成的 python.def 文件(位于文件夹中 Gendef 被执行)到用户目录
9)使用以下命令生成 libpython.a:

Dlltool-v —— dllname python26.dll —— def C: Users myname Def —— output-lib C: Users myname libpython26.a

10)将创建的 libpython26.a 移动到 C: Python26 libs

Produce your .pyd extension
11)创建一个测试 hello.pyx 文件和一个 setup.py 文件,如 Cython 教程(http://docs.cython.org/src/quickstart/build.html)
12)编制

Python setup.py build _ ext —— inplace

成交!

这个错误现在已经在 Python 2.7.6发行版候选者1中修复了。

修补提交是 给你

已解决的问题跟踪器线程是 给你

试试这个,对错误很有效
Https://github.com/develersrl/gccwinbinaries