Windows下用MinGW编译C文件报错:无法执行指定程序
问题场景
- 初始C代码可正常编译运行:
#include <stdio.h> int main( void ) { printf( "Hello, world without a new line" ); return 0; }
运行输出为 Hello, without a new line.
- 添加一行带换行的printf后:
#include <stdio.h> int main( void ) { printf( "Hello, world without a new line" ); printf( "Hello, world with a new line\n" ); return 0; }
使用命令 gcc filename.c -o filename.exe 编译后,运行时提示报错:The system cannot execute the specified program.
已做排查:环境变量PATH包含MinGW/bin路径,重启过程序排查内存问题,当前系统安装McAfee杀毒软件。
解决步骤
检查编译产物是否正常生成
查看编译后是否生成了filename.exe,如果文件大小为0字节或远小于正常可执行文件(通常至少几KB),说明编译过程实际存在隐性错误,执行gcc filename.c -o filename.exe -v查看详细编译日志,确认链接阶段是否失败。排查McAfee误拦截
带换行的printf可能导致生成的可执行文件被McAfee的实时防护误判为恶意程序:
- 打开McAfee控制台,查看隔离区是否存在
filename.exe,如果有,恢复并添加到信任列表; - 临时禁用McAfee的实时防护,重新编译运行程序,验证是否能正常执行。
- 更换输出文件名重试
执行编译命令时换个输出文件名,比如:
gcc filename.c -o test.exe
避免原有文件名被系统或杀毒软件标记。
- 验证MinGW组件完整性
编写一个极简的带换行输出的测试程序:
#include <stdio.h> int main() { printf("Test with newline\n"); return 0; }
编译运行,如果同样报错,说明MinGW可能存在组件损坏,尝试修复或重新安装MinGW。
内容的提问来源于stack exchange,提问作者c sharp
相关产品推荐
相关产品推荐

