德国骨科 发表于 2018-9-19 10:27:35

gcc: error: unrecognized command line option '-mno-cygwin'

执行下面命令
> C:\Python26\programas\Cython>python setup.py build_ext --inplace
我得到一个错误,说gcc没有-mno-cygwin选项:
> 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是:
C:\>gcc --version
gcc (GCC) 4.7.0 20110430 (experimental)
Copyright (C) 2011 Free Software Foundation, Inc.
我该怎么办呢?

此间少年 发表于 2018-9-19 10:28:45

GCC 4.7.0最终删除了已弃用的-mno-cygwin选项,但是distutils还没有赶上它。安装较旧版本的MinGW,或在Python目录中编辑distutils\cygwinccompiler.py以删除所有实例-mno-cygwin

污妖王 发表于 2018-9-19 10:30:44

一步一步的用python 2.6.6编译64位cython扩展,在win 7 64位中使用mingw编译器
安装mingw编译器
1)安装tdm64-gcc-4.5.2.exe进行64位编译
将补丁应用于python.h
2)修改C:\ python26 \ include中的python.h,如 http://bugs.python.org/file12411/mingw-w64.patch所示
修改distutils
3)消除Python26 \ Lib \ distutils \ cygwinccompiler.py中Mingw32CCompiler类中调用gcc的所有参数-mno-cygwin
4)在同一模块中,修改get_msvcr()以返回空列表而不是['msvcr90 ']当msc_ver =='1500'时。
生成libpython26.a文件(不包含在64位python中)
5)从mingw-w64-bin_x86_64- mingw_20101003_sezero.zip获取gendef.exe(gendef.exe在tmd64发行版中不可用。另一个解决方案是从源代码编译gendef ...)
6)复制python26.dll(位于C) \ windows \ system32)到用户目录(C:\ Users \ myname)
7)生成python26.def文件:
gendef.exe C:\ Users \ myname \ python26.dll
8)将生成的python.def文件(位于执行gendef的文件夹中)移动到用户目录
9)使用以下命令生成libpython.a:
dlltool -v --dllname python26.dll --def C:\ Users \ myname \ python26.def --output-lib C:\ Users \ myname \ libpython26.a
10)将创建的libpython26.a移动到C:\ Python26 \ libs
11)创建一个测试hello.pyx文件和setup.py文件,如用Cython教程指示(http://docs.cython.org/src/quickstart/build.html)
12)编译
python setup.py build_ext --inplace
完成!

深度大佬进修 发表于 2018-9-19 10:35:23

现在已在Python 2.7.6候选版本1中中修复了此错误
修补提交在这里。
已解决的问题在此处。

页: [1]
查看完整版本: gcc: error: unrecognized command line option '-mno-cygwin'