zoukankan      html  css  js  c++  java
  • 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!!!

  • 相关阅读:
    #18.2.27 codevs1098 均分纸牌
    18.2.26 codevs3143 二叉树的序遍历
    18.2.14 codevs1501 二叉树最大宽度和高度
    18.2.14 codevs1011 数的计算
    18.2.14 【水】codevs1475 m进制转十进制
    18.2.14 【水】codevs1474 十进制转m进制
    18.2.14 【水】codevs1430 素数判定
    18.2.13 codevs1212 最大公约数
    18.2.13 codevs1012 最大公约数和最小公倍数问题
    17.12.31 链表合并
  • 原文地址:https://www.cnblogs.com/mrblug/p/13523089.html
Copyright © 2011-2022 走看看