Windows下make clean指令错误[错误码2](系统找不到指定文件)的解决方案

问题来源

  因为笔者想用GCC编译器进行Windows下的C语言编程,安装了Mingw-w64的x86_64-posix-seh版本,并按照Visual Studio Code官方的教程,将Mingw-w64的bin目录正确添加到了环境变量path中,cmd下可调用gcc、gdb等指令。

  后来又遇到多文件编译问题,笔者百度之后发现Mingw-w64自带了make工具。不过这个make工具的名字是mingw32-make.exe(bin目录下)。于是,笔者按照网上的做法,将其复制到同一目录下并改名为make.exe。由于bin目录已经添加到环境变量中,这样操作之后,cmd下就可以直接使用make指令了。

  笔者使用Visual Studio Code作为代码编辑器,并直接在Terminal窗口中敲命令编译、运行程序,一切正常。花了好大力气入门了makefile文件的编写之后,笔者调用make指令,也能正确链接编译,得到正确的程序。

  然而,当笔者敲下make clean删除.o文件时,Terminal提示错误:系统找不到指定文件。

  

 

 

   这是笔者拙劣的makefile代码:

main.exe : main.o func.o
    gcc main.o func.o -o main.exe

main.o : main.c hstd.h
    gcc -c main.c

func.o : func.c hstd.h
    gcc -c func.c

clean :
    rm main.exe,main.o,func.o

   这段代码没有明显的语法语义错误,完全符合makefile的规则和Windows下Powershell的语法规则,可问题确实存在。以管理员身份运行Powershell之后,问题依然没有解决。

解决之路

   在bing和百度上搜索这个问题,花了大半天的时间,不论是在csdn还是博客园抑或是其他小网站上,都没有找到合适的解决方案。

   偶然间,笔者注意到一个网站没有尝试过,那就是笔者这边访问速度奇慢无比的Stackoverflow。。。

   结果,笔者在Stackoverflow上找到了问题的根源:

  

 

    原来make.exe使用的不是Powershell而是cmd!!!

    试验时候发现,cmd下果然默认不能调用rm指令:

  

 

    Powershell下可以(小技巧:这里rm不加参数直接按回车键可以添加多个要删除的目录/文件,如果不输入任何东西再按一次回车就可以退出rm回到shell):

  

 

   于是笔者简单修改了makefile文件(就把rm换成cmd下能调用的del):

main.exe : main.o func.o
    gcc main.o func.o -o main.exe

main.o : main.c hstd.h
    gcc -c main.c

func.o : func.c hstd.h
    gcc -c func.c

clean :
    del main.exe,main.o,func.o

  VSCode的Terminal中敲下make clean,没有报错。

  

  还是那句话:make.exe使用的不是Powershell而是cmd!!!

posted @ 2020-08-18 13:53  Mr_Blug  阅读(9399)  评论(0编辑  收藏  举报