2010-06-06 48 views
2

我的基本問題是,如果我從Windows命令行(Windows XP中的cmd.exe)運行GCC並且它什麼都不做:沒有.o文件被創建,沒有錯誤消息,沒有。如果我使用DOS風格的路徑,它只會拋出一個錯誤消息,但沒有別的。當我從Cygwin shell運行時,它會根據源中的錯誤拋出錯誤消息並根據需要生成.o文件。從DOS命令行使用'make'也不起作用。有沒有人遇到過這種行爲?Cygwin GCC + WinXP cmd.exe什麼都不做

+0

可能會幫助你更多http://shareprogrammingtips.com/c-language-programming-tips/how-can-i-use-gcc-in-windowscmd-just-like-using-gcc-in-linux-終奌站/ – 2011-11-19 18:50:48

回答

2

我已經在這方面取得了一些進展。背景:

我已經安裝了WinAVR,並在我的路徑中設置了它的bin目錄。 WinAVR是GCC和相關的開發工具,但是用於AVR 8位微控制器。它與常規GCC共享許多實用程序名稱。

在過去我記得Cygwin把它的bin目錄放在PATH中。這次似乎沒有這樣做,所以我把'C:\ cygwin \ bin'放入PATH,然後放入'C:\ cygwin \ usr \ bin'中。

Cygwin的最新版本與它處理文件的方式有關係。基本上,gcc.exe不是可執行文件,而是一種符合實際可執行文件的符號鏈接(根據您安裝的是gcc-3.exe或gcc-4.exe)。在BASH shell中,這些符號鏈接很容易解析,在cmd.exe中它們不是。這意味着如果你嘗試輸入'gcc'到cmd.exe作爲命令,它會迴應'訪問被拒絕'。解決方案是調用實際的GCC文件名(gcc-4)而不是符號鏈接。

解決方案似乎通過重新安排我的PATH來。要編輯PATH環境變量,請右鍵單擊「我的電腦」,然後轉到屬性,然後選擇高級,然後選擇環境變量。在「系統變量」下找到「路徑」並雙擊它進行編輯。刪除其中有C:\ cygwin的所有條目,然後轉到PATH的FRONT並在那裏輸入它們。對我來說,它是C:\ cygwin \ bin和C:\ cygwin \ usr \ bin。對我來說,重要的一點是確保Cygwin條目在WinAVR條目之前。我注意到,當我嘗試在cmd.exe中調用「make」時,它調用WinAVR版本而不是Cygwin版本。這導致我重新安排了我的路徑,並且在弄糊塗了一段時間之後,很明顯,從cmd.exe shell使用gcc-4可以工作。然後它在Code :: Blocks中工作,我就關閉了。

另外,它可能已經完全固定自己的東西。電腦有這樣做的方法。

0

另外,您可以刪除文件:gcc.exe這是一個文件鏈接,並重新命名 實際gcc的可執行文件:GCC-3.exe(或GCC-4.exe取決於您的版本),以gcc.exe