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

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

WBOY
WBOYOriginal
2016-06-07 15:49:371062Durchsuche

最近一直在弄一些Linux下的环境开发。不过还是一样被抓狂。因为自己的电脑都是Windows系统,所以还是尽量想让工作都在Windows平台下完成。于是我又开始鼓捣cygwin这个东西。不过这次下了最新版本的cygwin1.7,gcc就出现问题了。首先是我的Eclipse的toolchain

  最近一直在弄一些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程序有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:一、cocos2dNächster Artikel:Access 2007: The Missing Manual