天天看點

cygwin 1.7更新之後,外部直接通路gcc傳回Access is denied

  最近一直在弄一些Linux下的環境開發。不過還是一樣被抓狂。因為自己的電腦都是Windows系統,是以還是盡量想讓工作都在Windows平台下完 成。于是我又開始鼓搗cygwin這個東西。不過這次下了最新版本的cygwin 1.7,gcc就出現問題了。首先是我的Eclipse的toolchain無法識别cygwin gcc,隻能識别到的mingw gcc。然後是直接從cmd.exe進入控制台之後,即便PATH設定了cygwin/bin,也無法調用gcc和g++,現實都是Access denied。但是如果在cygwin的bash裡面進入,就沒有問題。

   最後,還是謝謝Google,讓我找到了這個問題的根本:http://www.cygwin.com/ml/cygwin/2009-03/msg00046.html . 原來,本質問題是,cygwin1.7采用了Linux下的link方式。也就是讓一個檔案和另外一個檔案關聯。而DOS無法識别這種關聯,是以,它就不知道gcc到底是gcc3還是gcc4哪個。

   如果不是輸入gcc,而是gcc-3或者gcc-4,那麼就OK了。g++也相應是g++-3或者g++-4。

   不過,這樣一來,cygwin外部開發環境要識别gcc和調用gcc就很麻煩了。我裝最新的Eclipse+CDT是整死也識别不出這個cygwin gcc。而Code::Blocks相對好一些,即便不能識别,你也可以通路去build option裡面修改gcc.exe為gcc-3.exe。似乎Eclipse+CDT裡面也可以修改,現在不記得了。但是,這種手動修改,畢竟讓人感覺 起來很不爽。

   最後還是總結一下,說到在windows平台調試各種Linux程式的方法。

  1. 如果是很幹淨的程式,standard C/C++,那麼最好的方式就是下載下傳mingw,配合CodeBlocks 。 CodeBlocks或許很多人都聽說過,這個軟體已經都到8.0版本了。之前我在使用之前,在unbuntu論壇上逛了很久,發現對于Linux下 C++ IDE,大家基本都推薦CodeBlocks和KDeveloper。KDeveloper就不用說了,那個東西太大了,沒有CodeBlocks快。 CodeBlocks基于wxWidgets (http://www.wxwidgets.org/ ),比較爽的界面。
  2. cygwin+codeblocks也是不錯的選擇。cygwin是真正模拟大部分Linux下的環境,不過就是比較大,然後還有剛才我說的一些問題。
  3. cygwin或者mingw+Eclipse+CDT。Eclipse這個開發環境在JAVA等真的可以用無敵來形容。不過在unbuntu論壇上,對它的C++的支援似乎評價不是很好。我在Windows和unbuntu下都搭建了Eclipse+CDT ,發現CDT現在功能其實很強的。不過,CDT似乎對C++文法解析有一定的問題。還有就是啟動gdb實在是太慢了。。。
  4. VIM+ctags+cygwin(mingw)+GDB(DDD) 應該諸多專業程式員的選擇。我其實很多年前就在用VIM了,不過後來又沒用了,因為主要都開始用Java來做東西了。如果習慣了Java的開發方式,我估 計很難回到VIM那樣。因為當你習慣了Eclipse寫Java,寫Python,你對Eclipse期望就是希望它能做一切開發,事實上Eclipse 幾乎也是能做一切開發,但是就是做不好而已了。VIM的确也很不錯,如果插件都裝好,其實它的開發環境比這些IDE都好。另外要注意的就是調試環境。相對 于編輯環境,我其實更關注調試環境。我覺得,IDE真正的友善并不是在編輯和編譯,而是在調試上。還好,Linux的平台下有DDD(http://www.gnu.org/software/ddd/ )和insight(http://sourceware.org/insight/ )。 前者是調用GDB接口,和諸多IDE一樣,來實作的編譯。後者則是把整個GDB源代碼都包含進去了,似乎要進行更深層次的調試功能挖掘。不過在 cygwin 1.7裡面,已經沒有附帶了insight了。而逛了諸多論壇,也發現對DDD的歡迎程度實在比insight高很多。不過,DDD的界面實在是太醜 了。。。調試的代碼都會讓人沒有心情的。
  5. VMWare Player(or Virtual Box)。現在VMWare Player , Virutal Box 已 經做得很成熟了。是以在Windows裡面模拟一個真實的Linux不是難事。隻是VMWare Workstation和Server都是收費的,那麼個人使用者最好去下載下傳輕便的VMWare Player或者Virtual Box。Virutal Box在MacOS上用得很多,不過VMWare Player畢竟有大名鼎鼎的VMWare公司做後盾,應該更加可靠一些。比如說,針對Win7的問題,他們肯定是最早解決的。

大概總結了這麼多。希望對大家在Windows上開發,調試Linux程式有所幫助。

繼續閱讀