Linux系统下使用gcc编译C语言文件出现大量报错如何解决?
问题根因
你的编译报错核心是Linux原生gcc调用了Windows平台专用的MinGW头文件,MinGW是面向Win32目标的工具链,完全不兼容Linux环境,因此触发大量类型、宏不匹配的错误。
解决步骤
- 首先确认你的
first.c真实内容,报错栈显示该文件第1行引入了Windows独有的conio.h头文件,你贴出的代码和实际文件内容不一致,执行如下命令查看真实内容:
如果存在cat ~/Desktop/c/first.c#include <conio.h>行直接删除,Linux环境开发C程序不需要这个头文件。 - 删除你误安装到系统公共头文件路径的MinGW相关Windows头文件,这些文件不属于Linux原生环境,删除不影响正常编译:
sudo rm -rf /usr/local/include/*mingw* /usr/local/include/corecrt.h /usr/local/include/crtdefs.h /usr/local/include/conio.h - 重新执行编译命令即可正常生成可执行文件:
编译完成后执行gcc -o output first.c./output即可运行程序。
额外说明
如果你是为了交叉编译Windows平台的程序才安装的MinGW相关文件,后续编译Windows目标程序时请直接使用专用的交叉编译器x86_64-w64-mingw32-gcc,不要使用系统默认的Linux原生gcc调用这些Windows头文件。
内容的提问来源于stack exchange,提问作者DJGupta
相关产品推荐
相关产品推荐

