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!!!

  • 相关阅读:
    函数的逻辑读成零
    SQL逻辑读变成零
    体系结构中共享池研究
    执行计划基础 动态采样
    执行计划基础 统计信息
    识别低效率的SQL语句
    oracle 知识
    XPATH 带命名空间数据的读取
    ACTIVITI 研究代码 之 模版模式
    ACTIVITI 源码研究之命令模式执行
  • 原文地址:https://www.cnblogs.com/mrblug/p/13523089.html
Copyright © 2011-2022 走看看