【问题标题】:Compiling c program with MinGW causes cc1.exe fatal error用MinGW编译c程序导致cc1.exe致命错误
【发布时间】:2020-04-17 22:59:33
【问题描述】:

我使用 win-builds 安装了 MinGW-w64。 一切正常,但是当我使用

编译文件时

gcc -Wall -o prog.exe main.c

我收到此错误

cc1.exe: fatal error: Files/win-builds-1.5.0/include: No such file or directory compilation terminated.

我已经更新了 gcc 路径。当我尝试在 eclipse 上构建时,我得到了同样的错误。 win-builds 放置所有文件的位置是C:\Program Files\win-builds-1.5.0\,并且存在\include\ 文件夹。

我的猜测是 cc1.exe 正在尝试访问 C:\Program Files\win-builds-1.5.0\include,但由于某种原因,它会将 C:\ProgramFiles\win-builds-1.5.0\include 分开。

如何让编译器工作?

编辑:

这是要编译的代码

/*
 * main.c
 *
 *  Created on: 13/06/2018
 *      Author: haslima
 */
#include <stdio.h>

int main()
{
    printf("Hello World");
    return 1;
}

编辑:

当我运行 gcc -v -c -o prog.exe main.c 时,我得到这个输出:

Reading specs from c:/program files/win-builds-1.5.0/bin/../lib64/gcc/x86_64-w64-mingw32/4.8.3/specs
COLLECT_GCC=gcc
Target: x86_64-w64-mingw32
Configured with: ../gcc-4.8.3/configure --prefix=/opt/windows_64 --with-sysroot=/opt/windows_64 --libdir=/opt/windows_64/lib64 --mandir=/opt/windows_64/man --infodir=/opt/windows_64/info --enable-shared --disable-bootstrap --disable-multilib --enable-threads=posix --enable-languages=c,c++ --enable-checking=release --enable-libgomp --with-system-zlib --with-python-dir=/lib64/python2.7/site-packages --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --with-gnu-ld --verbose --enable-java-home --with-java-home=/opt/windows_64/lib64/jvm/jre --with-jvm-root-dir=/opt/windows_64/lib64/jvm --with-jvm-jar-dir=/opt/windows_64/lib64/jvm/jvm-exports --with-arch-directory=amd64 --with-antlr-jar='/home/adrien/projects/win-builds-1.5/slackware64-current/d/gcc/antlr-*.jar' --disable-java-awt --disable-gtktest --build=x86_64-slackware-linux --host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32
Thread model: posix
gcc version 4.8.3 (GCC)
COLLECT_GCC_OPTIONS='-v' '-c' '-o' 'prog.exe' '-mtune=generic' '-march=x86-64'
 c:/program files/win-builds-1.5.0/bin/../libexec/gcc/x86_64-w64-mingw32/4.8.3/cc1.exe -quiet -v -iprefix c:\program files\win-builds-1.5.0\bin\../lib64/gcc/x86_64-w64-mingw32/4.8.3/ -D_REENTRANT -IC:/Program Files/win-builds-1.5.0/include main.c -quiet -dumpbase main.c -mtune=generic -march=x86-64 -auxbase-strip prog.exe -version -o C:\Users\hasli\AppData\Local\Temp\ccnpAzB7.s
GNU C (GCC) version 4.8.3 (x86_64-w64-mingw32)
        compiled by GNU C version 4.8.3, GMP version 5.1.3, MPFR version 3.1.2, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "c:/program files/win-builds-1.5.0/lib64/gcc/../../lib64/gcc/x86_64-w64-mingw32/4.8.3/include"
ignoring nonexistent directory "/opt/windows_64/opt/windows_64/lib64/gcc/x86_64-w64-mingw32/4.8.3/../../../../include"
ignoring duplicate directory "c:/program files/win-builds-1.5.0/lib64/gcc/../../lib64/gcc/x86_64-w64-mingw32/4.8.3/include-fixed"
ignoring duplicate directory "c:/program files/win-builds-1.5.0/lib64/gcc/../../lib64/gcc/x86_64-w64-mingw32/4.8.3/../../../../x86_64-w64-mingw32/include"
ignoring nonexistent directory "/opt/windows_64/mingw/include"
ignoring nonexistent directory "C:/Program"
#include "..." search starts here:
#include <...> search starts here:
 c:\program files\win-builds-1.5.0\bin\../lib64/gcc/x86_64-w64-mingw32/4.8.3/include
 c:\program files\win-builds-1.5.0\bin\../lib64/gcc/x86_64-w64-mingw32/4.8.3/include-fixed
 c:\program files\win-builds-1.5.0\bin\../lib64/gcc/x86_64-w64-mingw32/4.8.3/../../../../x86_64-w64-mingw32/include
End of search list.
cc1.exe: fatal error: Files/win-builds-1.5.0/include: No such file or directory
compilation terminated.

【问题讨论】:

  • 尝试一个没有任何包含的 main.c。
  • main.c 是否包含引用这些路径的#includes?你能添加它的代码吗?还有set Icmd 中输出什么?
  • @johnelemans 试过了。发生了同样的问题。唯一包含的是#include &lt;stdio.h&gt;
  • @CristiFati 我添加了代码。如您所见,更简单是不可能的。在 cmd 中运行set I我得到Environment variable I not defined
  • 嗯,那么那些 include 路径在 gcc 的配置(文件?)中的某处。在那里他们应该被双引号。或者提到了“win-builds”(不知道那是什么)。也许在那里。

标签: c mingw mingw-w64


【解决方案1】:

来自[MinGW]: Getting Started(包括粗体):

MinGW 可能会遇到包含空格的路径问题,如果不是,通常与 MinGW 一起使用的其他程序会遇到此类路径问题。因此,我们强烈建议不要将 MinGW 安装在路径名引用中有空格的任何位置。您应该避免安装到任何名称为“程序文件”或“我的文档”等的目录或子目录中。

因此,解决方案非常简单:

  • 卸载您当前的版本(可能没有必要,但没有必要保留某些内容)
  • 确保阅读所有安装要求/注意事项
  • 将它安装在一个 SPACE 免费的 dir

我应该早点想到这一点,因为我没有在默认目录中安装东西(例如,我在 "f:\Install\pc064\MinGW\MinGW- 中安装了 MinGW W64\x86_64-8.1.0-posix-seh-rt_v6-rev0").

【讨论】:

  • 非常感谢!您提供的网站是 MinGW 版本,而不是 MinGW-w64。尽管您的解决方案效果很好。
  • 有什么不同吗(嗯,除了 (x86 / x64) 架构)?其实不是MinGW有问题,而是gcccc1端口)有问题。
  • 我猜不是。您的解决方案非常完美
  • 很高兴能提供帮助!老实说,我很困惑,因为我在(远)过去遇到了这个问题,所以我无法尽快解决。
  • 可能昨天你遇到了和我一样的问题。我想昨天你建议的网站不在线。我尝试安装MinGW版本,网站不在线。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多