Linux系统下gcc编译C程序出现mingw相关报错该如何解决?
问题核心原因
你当前的Linux系统的/usr/local/include路径下被错误写入了Windows平台的mingw头文件,该路径的头文件加载优先级高于系统原生路径,导致调用原生gcc编译时加载了仅支持Win32的头文件触发报错。你之前安装mingw-w64的操作不对症,自然解决不了问题。
解决方案步骤
- 首先清理错误安装到
/usr/local/include下的Windows mingw相关头文件:
rm -rf /usr/local/include/*.h /usr/local/include/sec_api
- 接下来验证Linux原生标准头文件是否正常,重新安装glibc开发包(Kali系统对应命令如下):
apt update && apt install --reinstall libc6-dev gcc
- 最后重新执行编译命令即可:
gcc first.c -o output
补充说明
如果你确实需要编译Windows平台可用的exe程序,才需要使用mingw-w64,对应的编译命令不是原生gcc,而是对应架构的交叉编译命令:
- 编译32位Windows程序:
i686-w64-mingw32-gcc first.c -o output.exe - 编译64位Windows程序:
x86_64-w64-mingw32-gcc first.c -o output.exe
内容的提问来源于stack exchange,提问作者DJGupta
相关产品推荐
相关产品推荐

