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!!!
最新文章
- ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(2)用户登录、注销
- json,pickle
- [读书笔记]OSGI-灵活的类加载器架构
- Ajax基础实例
- 内网渗透中的反弹Shell与端口转发
- linux命令(12)uniq去重
- Spring3+MyBatis3整合log4j无法输出SQL语句问题的解决
- mysql-1862、1820、java.sql.SQLException: Your password has expired. To log in you must change it using a client that supports expired passwords.
- Weblogic 部署注意事项
- 链接分析算法之:HITS算法
- Iterator、for..of,for...in和自定义遍历器**
- 【1414软工助教】团队作业8——第二次项目冲刺(Beta阶段) 得分榜
- ElasticSearch 学习记录之如任何设计可扩容的索引结构
- 解决Apache Web Server的几个错误
- k8s重要概念及部署k8s集群(一)--技术流ken
- 怎么在linux下创建一个可运行脚本?
- opencv: 排序
- Codeforces Round #313 (Div. 2) C. Gerald&;#39;s Hexagon(补大三角形)
- .Net 常用插件及第三方库
- 微信小程序-下拉事件(onPullDownRefresh)不触发
热门文章
- 题解 SP1812 【LCS2 - Longest Common Substring II 】
- ‘100%’wuxiao
- docker时区不正确的问题修改记
- iframe和DataForm
- Spring学习之Spring中AOP方式切入声明式事务
- luogu P4775 [NOI2018]情报中心 线段树合并 虚树 树的直径trick
- 一本通 高手训练 1781 死亡之树 状态压缩dp
- luogu P1526 [NOI2003]智破连环阵 搜索+最大匹配+剪枝
- x86架构:保护模式下利用中断实现抢占式多任务运行
- linux的文件处理(匹配 正则表达式 egrep awk sed)和系统、核心数据备份