用mingw32 出现 gcc: command not found 怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用mingw32 出现 gcc: command not found 怎么办?相关的知识,希望对你有一定的参考价值。

系统环境变量设置不对,在“我的电脑”-右键“属性”-“高级”-“环境变量”中设置环境变量,新建一个名“PATH”的环境变量,如果你的MinGW装在C:\MinGW。则环境变量值为“C:\MinGW\bin\”,然后在命令行中键入“gcc --version”,如果能输出gcc的版本信息,说明MinGW的环境变量设置对了,否则就是错了。 参考技术A 我也出现过这样的情况,就是环境变量改好了也一样出错。
你可以试一试
将mingw / bin 目录下的gcc.exe文件重新复制一个在本目录下,然后重命名为cc.exe
我当时是这么解决的....

用 cython 和 mingw 编译会产生 gcc: error: unrecognized command line option '-mno-cygwin'

【中文标题】用 cython 和 mingw 编译会产生 gcc: error: unrecognized command line option \'-mno-cygwin\'【英文标题】:Compiling with cython and mingw produces gcc: error: unrecognized command line option '-mno-cygwin'用 cython 和 mingw 编译会产生 gcc: error: unrecognized command line option '-mno-cygwin' 【发布时间】:2011-08-27 10:09:57 【问题描述】:

我正在尝试使用 mingw(64 位)在 win 7 64 位中使用 cython 编译 python 扩展。 我正在使用 Python 2.6(Active Python 2.6.6)和足够的 distutils.cfg 文件(将 mingw 设置为编译器)

执行时

> 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.

我该如何解决?

【问题讨论】:

这里是a link!用最新的 Cython 和 MingW 解决问题 【参考方案1】:

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

【讨论】:

谢谢伊格纳西奥。我已经自己尝试过这个解决方案(从 cygwinccompyler 中消除 -mno-cygwin)。错误消失了,但后来我得到了一个与 ld 不同的错误。但这是一个不同的问题。我明天会发布它。现在需要休息一下……为什么在windows中编译这么难? 这对我有用。我一字不差地听从了伊格纳西奥的指示。将 cygwincompile.py 文件中的 4 个字符串“-mno-cygwin”实例替换为“” @joaquin:您是否设法对遇到的ld 错误进行排序?我遇到了同样的错误,正在努力对其进行排序。 @robintw 是的,我做到了。在那一刻我发布了一个食谱(我找到了它!)。请参阅编辑 Python 2.7.9 已经解决了这个问题。 Python 2.7.8 仍然有它。【参考方案2】:

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


使用 python 编译 64 位 cython 扩展的分步配方 2.6.6 在 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

修改 distutils2013 年编辑:请注意,在 python 2.7.6 和 3.3.3 中,-mno-cygwin 最终已被删除,因此可以跳过第 3 步 .

3) 去掉调用 gcc 中的所有参数 -mno-cygwin Python26\Lib\distutils\cygwinccompiler.py 中的 Mingw32CCompiler 类 4)在同一个模块中,修改get_msvcr()返回一个空列表 而不是 ['msvcr90'] 当 msc_ver == '1500' 时。

生成 libpython26.a 文件(不包括在 64 位 python 中)编辑 2013:可以通过从以下位置下载并安装 libpython26.a 跳过以下步骤 5-10 gohlke

5) 从mingw-w64-bin_x86_64-获取gendef.exe mingw_20101003_sezero.zip (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

生成您的 .pyd 扩展名 11) 创建一个测试 hello.pyx 文件和一个 setup.py 文件,如中所示 cython 教程 (http://docs.cython.org/src/quickstart/build.html) 12) 编译

python setup.py build_ext --inplace

完成!

【讨论】:

我在 win64 python27 上做了第 1 步。然后我尝试并成功安装了cython。我不知道如何处理第 2 步中的补丁。 @Chris Raastad。有趣的。但这不是关于 cython 安装,而是 cython 编译脚本。不知道你是不是这个意思。无论如何,两天前有来自 robintw 的评论关于有 ld 错误。所以,如果你真的有 mingw 工作,也许这取决于你安装的版本,也可能取决于你已经安装的库,你一开始就通过了,或者你遇到了错误。 +1 这是一个有用的答案。对于使用 numpy 的扩展,我还必须破解 numpy/distutils 文件夹中的选项,两者都是 mingw32compiler.py 在 python27 中,您似乎必须通过将 MS_WIN64 添加到 cygwinccompiler.py 文件中来定义它。见这里:***.com/a/19867426/2136991 @David 在您链接 OP 的问题中指的是 python26,而不是 python27。您是否完全按照我的食谱进行操作,但仍需要进行您所指的更改?【参考方案3】:

此错误现已在 Python 2.7.6 release candidate 1 中修复。

补丁提交是here。

已解决的问题跟踪线程是here。

【讨论】:

【参考方案4】:

试试这个。它确实适用于错误https://github.com/develersrl/gccwinbinaries

【讨论】:

以上是关于用mingw32 出现 gcc: command not found 怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

mingw32-gcc.exe: error: CreateProcess: No such file or directory

使用 MinGW32 GCC 编译。只告诉链接库一次?

怎样用gcc或者ld链接.dll文件

exec: "gcc": executable file not found in %PATH%

mingw64 的 gcc 不使用 mingw 套件的汇编程序

mingw32位下载以及windows下安装