【问题标题】:error when trying to compile with MinGW: cannot execute cc1plus尝试使用 MinGW 编译时出错:无法执行 cc1plus
【发布时间】:2020-10-05 06:47:45
【问题描述】:

我使用 GUI 安装程序在 Windows 7 32 位上进行了 MinGW 的全新安装,并安装了

  • ming32-base-bin
  • mingw32-gcc-g++-bin
  • msys-base-bin

当试图从 cmd.exe 编译一个简单的“Hello World.cpp”时,我得到了错误:

C:\Users\Lorenzo\Desktop>g++ "Hello World.cpp" -o"Hello World.exe" -m32 g++:致命错误:无法执行“cc1plus”:CreateProcess:没有这样的文件或目录。 编译终止。

奇怪的是,通过从桌面抓取文件并将其放在 MinGW 目录中的 g++.exe 上(以便我使用应用程序打开文件),我没有收到任何错误。

我发现的一个临时解决方法是在 cc1plus 所在的文件夹中添加一个新的环境变量 (C:\MinGW\libexec\gcc\mingw32\9.2.0)。该程序运行但不包含来自 C:/MinGw/lib 和 C:/MinGw/Include 的库,我必须手动包含这些库,这不应该发生(我猜)。 我不想做这个粗略的修复,因为我知道随着时间的推移我会遇到一些其他问题。

【问题讨论】:

  • CreateProcess 不是 glibc 函数。这是 Windows API(存在于 windows.h 和 Kernel32.dll 中)。所以 g++ ** 是无效的。请使用 Win32 C 编译器或将 CreateProcess 替换为 exec() func。
  • 这听起来像是您的环境变量的问题。你的%PATH% 是什么样的?
  • @SamuelD.Muprhy 对不起,我真的不明白你在说什么。我必须从不同的终端运行命令吗?运行不同的编译器?抱歉,我对此很陌生。
  • @Botje 路径:“C:\Program Files\Common Files\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\ System32\WindowsPowerShell\v1.0\;C:\MinGW\bin;"
  • cc1plus.exe 在您的系统中的哪个位置?看起来它也需要在您的 PATH 上。

标签: c++ g++ mingw


【解决方案1】:

好的。我很幸运地找到了解决方案。

就像在g++中添加.exe一样简单

> g++.exe *input file* -o*output.exe*

不知道这是否是错误,但这对我有用。

【讨论】:

  • 另外,我真的建议避免在路径和文件名中使用空格。
【解决方案2】:

我不确定您使用的是哪个 MinGW,但最好使用 MinGW-w64。 您可以从http://winlibs.com/ 获得不需要安装的独立版本。该网站还提供了一些有关如何使用它的说明。

【讨论】:

  • 为什么使用 MinGW-w64 更好?
  • @L_or_Enzo 它是最新的(支持更新的 Windows 版本的 API),并且支持 32 位和 64 位 Windows。
猜你喜欢
  • 1970-01-01
  • 2014-11-28
  • 2019-04-07
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多