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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM