【问题标题】:CLion: Error:The C compiler "C:/MinGW/bin/gcc.exe" is not able to compile a simple test programCLion:错误:C 编译器“C:/MinGW/bin/gcc.exe”无法编译简单的测试程序
【发布时间】:2015-07-05 04:14:21
【问题描述】:

我正在尝试使用 MinGW 在 Windows 7 上运行 CLion,但由于某种原因,CMake 无法编译简单的测试程序,但是当我创建一个简单的 hello world 文件时,当我直接调用编译器而不是 CMake 时,它​​编译得很好.

我已经尝试了几个版本的 MinGW,但对错误没有影响。我什至卸载了我的 AV 以查看是否是问题所在,但再一次没有任何改变。

我的路径中有 MinGW 和 CMake。起初我认为这可能是 TEMP 文件夹的权限问题,但它们看起来都很好。我也是管理员帐户。

这是我在 CLion 中遇到的错误:

Error:The C compiler "C:/MinGW/bin/gcc.exe" is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp
Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTryCompileExec141319549/fast"
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTryCompileExec141319549.dir\build.make CMakeFiles/cmTryCompileExec141319549.dir/build
mingw32-make.exe[1]: Entering directory 'C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp'
"C:\Program Files (x86)\JetBrains\CLion 1.0\bin\cmake\bin\cmake.exe" -E cmake_progress_report C:\Users\Jim\.clion10\system\cmake\generated\4cb6a70c\4cb6a70c\__default__\CMakeFiles\CMakeTmp\CMakeFiles 1
CMakeFiles\cmTryCompileExec141319549.dir\build.make:56: recipe for target 'CMakeFiles/cmTryCompileExec141319549.dir/testCCompiler.c.obj' failed
process_begin: CreateProcess(C:\Users\Jim\AppData\Local\Temp\make68804-1.bat, C:\Users\Jim\AppData\Local\Temp\make68804-1.bat, ...) failed.
make (e=2): Het systeem kan het opgegeven bestand niet vinden.
mingw32-make.exe[1]: *** [CMakeFiles/cmTryCompileExec141319549.dir/testCCompiler.c.obj] Error 2
mingw32-make.exe[1]: Leaving directory 'C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp'
Makefile:117: recipe for target 'cmTryCompileExec141319549/fast' failed
mingw32-make.exe: *** [cmTryCompileExec141319549/fast] Error 2
CMake will not be able to correctly generate this project.

这是我尝试从 CMD 使用 CMake 时遇到的错误:

【问题讨论】:

  • 我尝试了你所说的,但错误与我之前的一样。这是日志的输出。 pastebin.com/hMFFN5Gs
  • 我卸载了我的防病毒软件,禁用了 Windows Defender,因为它出于某种原因打开了,甚至禁用了我的防火墙。我已经尝试过 MinGW-w64 甚至是那些 TDM 之一,但它们都给出了相同的错误。但无论如何,我再次尝试使用 MinGW-w64 和最新的 CMake。这些是我在尝试您的建议时得到的日志:pastebin.com/wZZWx9Dy 与以前几乎相同。
  • 它说“找不到文件”...你能在构建目录中找到生成的 Makefile 吗? (C:/Users/Jim/Documents/test/buidl/CMakeFiles/CMakeTmp 中的某些内容)如果是,请发布...buidl 只是拼写错误,对吗?无论如何,编译器的测试有效,但 Make 测试无效。试试忍者。
  • 呵呵,是的,只是拼写错误。无论如何,我在您建议的目录中找不到任何内容。我现在尝试过 ninja,CMake 似乎没有给我错误,但我在任何地方都找不到编译后的 hello world。这些是我从中得到的日志:pastebin.com/KK1GWHDb
  • 哈哈,哎呀!是的,它编译得很好!我确实在谷歌上找到了一些关于将 Ninja 与 CLion 一起使用的信息:mergeconflict.net/2014/11/… 我可能会尝试这样做,因为 make 显然出于某种原因不想在我的计算机上工作。

标签: gcc cmake mingw clion


【解决方案1】:

对于一个虚拟的 cmake 项目(一个 CMakeLists.txt,只有 cmake_minimum_required(VERSION 2.8)add_executable(helloWorld <your hello world program>).),我们已经确定编译器和 CLion 不是问题,所以它可能与 make 有关。 Here 是日志。

我的猜测是你的路径中有 msys。如果sh.exe 在您的路径中,则为known to cause problems

作为一个安全的替代方案,您可以决定使用ninja 作为 make 的替代方案(cmake supports it experimentally,但实际上它很好地支持它)。 Here 你可以找到预构建的包(事实上,它只是你必须放入路径中的一个可执行文件)。

CLion should work just fine 中的忍者集成。

【讨论】:

  • 只是为了限定这一点:任何 MSYS 二进制文件永远应该在 $PATH 中,除非您的进程作为正确实例化的 MSYS shell 的子进程运行,在这种情况下,我想,您应该使用 CMake 的 MSYS Makefiles 功能; (猜测,因为我从来没有发现 CMake 对我有用,所以我自己不使用它)。如果您正在使用MinGW Makefiles 功能,那么它不应该是mingw32-make.exe 中的$PATH 吗?
  • @KeithMarshall 如果你的消息是给他布兰森,你应该把它贴在他的问题下,否则他不会收到通知
  • “你应该把它贴在他的问题下,否则他不会被通知”:我没有意识到,谢谢。这是一个错误的功能,IMO;尽管如此,我还是对这个问题发表了评论,建议他审查 cmets 的答案。只是为了记录,我之前的评论对你们俩都有关。
  • @KeithMarshall MSYS 不在我的路径中,cmake 确实使用了 mingw32-make.exe 我已经玩弄了更多,但我仍然无法让它工作。虽然我的朋友刚刚一切正常,所以我想知道我做错了什么。我的 Windows 安装也非常新鲜,所以这很奇怪。
  • @JimBransen,我不知道你做错了什么;如果是 CMake 问题,我无能为力,因为我对 CMake 一无所知。要验证是否是 MinGW 问题,您能否使用 mingw32-make.exe 创建一个简单的测试,但不使用 CMake?
【解决方案2】:

我遇到了类似的问题。你在 CLion 之前安装过 MinGW 吗?

如果您只安装了带有 MinGW(基础)的 C 编译器,则 CLion 有可能正在测试一个不存在的 C++ 编译器。

您应该尝试从安装管理器安装 MinGW C++ 编译器。或者您可以简单地删除 C:\MinGW 文件夹,然后再次启动安装程序,这次添加 C 和 C++ 编译器。如果不起作用,请尝试重新安装 CLion。

这是一个对我有用的快速解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2022-11-30
    • 1970-01-01
    • 2014-11-16
    • 2021-01-23
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多