从Cygwin主页下载,只有setup.exe一个文件。运行,将会让用户选择是从internet直接安装,下载,或者从本地目录安装。因cygwin整个系统是一组包文件。
选择只从internet下载,以备重装之用。仅选择了开发库,大约有800多M。
下载后,运行setup.exe 选择了库的保存目录,安装顺利完成。
启动cygwin环境,gcc –version正常打印版本信息,4.5.X版本大概。
然后下载eclipse CDT集成开发环境。解压缩后,在创建工程时,直接有选择C编译环境的选择,因本机先前有VS编译环境,所以自然有cygwin和vs的两种选择,选择第一种。这里比较奇怪,cygwin安装时大约不会写注册表,那么eclipse怎么知道存在cygwin的gcc编译器呢?不去管它。
创建个ansi C的样例程序,build成功,运行,问题出现了,无错误提示,也无结果输出。
在eclipse中未找到选择c 编译器的地方,以前eclipse java开发环境是有的。想想,cygwin的shell其实是个unix bash的模拟器,而elcipse直接运行cygwin编译器生成的程序,因未在cygwin环境下运行,自然不会成功。在windows文件夹下直接双击testc.exe,果然报错。恍然大悟,将cygwin的运行库文件cygwin1.dll 拷入windows的system32目录下,在ecliipse环境下运行testc程序,输出正常,在win系统下直接运行testc程序,亦正常。
Cygwin1.dll大约起了将C函数包装成unix api的作用。
注:后期重启eclipse时(使用的大约是3.7版本),发现cygwin gcc居然消失了,删除workspace目录也没有用,重新安装eclipse也无用,纠结很长时间。后来发现取消下面选择适用本平台gcc编译器的复选框,然后手工指定cygwin编译器,仍可以正常编译。只是不知为何出现过的cygwin gcc选项消失了。
调试问题:调试时果然如一些文章所称出现了错误,简单的说就是windows目录与unix文档目录间映射出了问题。在windows->preference->c/c++->debug->source lookup path中,添加一条目录映射,将/cygdrive/e映射为e:\,这样gdb将可正确找到存放于e盘相应目录下的源文件。映射有优先次序,将此条置于最上一条,即可正常调试。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/335.html
评论列表(1条)
好文章,内容文笔犀利.