您好,欢迎访问一九零五行业门户网

cygwin 1.7升级之后,外部直接访问gcc返回Access is denied

最近一直在弄一些linux下的环境开发。不过还是一样被抓狂。因为自己的电脑都是windows系统,所以还是尽量想让工作都在windows平台下完成。于是我又开始鼓捣cygwin这个东西。不过这次下了最新版本的cygwin1.7,gcc就出现问题了。首先是我的eclipse的toolchain
 最近一直在弄一些linux下的环境开发。不过还是一样被抓狂。因为自己的电脑都是windows系统,所以还是尽量想让工作都在windows平台下完成。于是我又开始鼓捣cygwin这个东西。不过这次下了最新版本的cygwin1.7,gcc就出现问题了。首先是我的eclipse的toolchain无法识别cygwin gcc,只能识别到的mingwgcc。然后是直接从cmd.exe进入控制台之后,即便path设置了cygwin/bin,也无法调用gcc和g++,现实都是accessdenied。但是如果在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是整死也识别不出这个cygwingcc。而code::blocks相对好一些,即便不能识别,你也可以访问去buildoption里面修改gcc.exe为gcc-3.exe。似乎eclipse+cdt里面也可以修改,现在不记得了。但是,这种手动修改,毕竟让人感觉起来很不爽。
   最后还是总结一下,说到在windows平台调试各种linux程序的方法。
如果是很干净的程序,standard c/c++,那么最好的方式就是下载mingw,配合codeblocks。codeblocks或许很多人都听说过,这个软件已经都到8.0版本了。之前我在使用之前,在unbuntu论坛上逛了很久,发现对于linux下c++ide,大家基本都推荐codeblocks和kdeveloper。kdeveloper就不用说了,那个东西太大了,没有codeblocks快。codeblocks基于wxwidgets(http://www.wxwidgets.org/),比较爽的界面。cygwin+codeblocks也是不错的选择。cygwin是真正模拟大部分linux下的环境,不过就是比较大,然后还有刚才我说的一些问题。cygwin或者mingw+eclipse+cdt。eclipse这个开发环境在java等真的可以用无敌来形容。不过在unbuntu论坛上,对它的c++的支持似乎评价不是很好。我在windows和unbuntu下都搭建了eclipse+cdt,发现cdt现在功能其实很强的。不过,cdt似乎对c++语法解析有一定的问题。还有就是启动gdb实在是太慢了。。。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源代码都包含进去了,似乎要进行更深层次的调试功能挖掘。不过在cygwin1.7里面,已经没有附带了insight了。而逛了诸多论坛,也发现对ddd的欢迎程度实在比insight高很多。不过,ddd的界面实在是太丑了。。。调试的代码都会让人没有心情的。vmware player(or virtual box)。现在vmware player, virutal box已经做得很成熟了。所以在windows里面模拟一个真实的linux不是难事。只是vmwareworkstation和server都是收费的,那么个人用户最好去下载轻便的vmware player或者virtualbox。virutal box在macos上用得很多,不过vmwareplayer毕竟有大名鼎鼎的vmware公司做后盾,应该更加可靠一些。比如说,针对win7的问题,他们肯定是最早解决的。大概总结了这么多。希望对大家在windows上开发,调试linux程序有所帮助。
其它类似信息

推荐信息