原创 windows 与 Cygwin

2007-12-21 21:33 4315 7 8 分类: MCU/ 嵌入式
为了在 Windows 下开发嵌入式操作系统应用程序,可以在 Windows 环境下装上 Cygwin 软件。


Cygwin 是一个在 Windows 平台上运行的 Unix 模拟环境,是 Cygnus Solutions 公司开发的自由软件。它对于学习掌握 Unix/Linux 操作环境,或者进行某些特殊的开发工作,尤其是使用 GNU 工具集在Windows 上进行嵌入式系统开发,非常有用。


Cygnus 当初首先把 gcc , gdb 等开发工具进行了改进,使它们能够生成并解释 win32 的目标文件。然后,把这些工具移植到 windows 平台上去。一种方案是基于 win32 API 对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此, Cygnus 采取了一种不同的方法 —— 他们写了一个共享库 ( 就是 cygwin1.dll) ,把 win32 API 中没有的 Unix 风格的调用 ( 如 fork,spawn,signals,select,sockets等 ) 封装在里面,也就是说,他们基于 win32 API 写了一个 Unix 系统库的模拟层。这样,只要把这些工具的源代码和这个共享库连接到一起,就可以使用 Unix 主机上的交叉编译器来生成可以在Windows 平台上运行的工具集。以这些移植到 Windows 平台上的开发工具为基础, Cygnus 又逐步把其他的工具 ( 几乎不需要对源代码进行修改,只需要修改他们的配置脚本 ) 软件移植到 Windows 上来。这样,在 Windows 平台上运行 bash 和开发工具、用户工具,感觉好像在 Unix 上工作。 关于Cygwin 实现的更详细描述,请参考 http://cygwin.com/cygwin-ug-net/cygwin-ug-net.html 。


Cygwin 软件的安装


要得到 Cygwin 的最新安装版本,请到 Cygwin 的主页 http://cygwin.com/ 上下载最新的 Cygwin , 在该页面的右上角有 '' Install Cygwin Now '' ,点击此处,就会先下载一个叫做 setup.exe 的 GUI 安装程序,用它能下载一个完整的 Cygwin 。


在安装的过程中,会让用户选择安装哪些包,这些包主要是确定开发环境,编译工具等,如果不能确定具体需要哪些包的话,而硬盘空间足够的情况下,就选择全部安装。在出现的对话框的 ''All''的右边点击 ''Default'' ,直到变成 ''Install'' ,如下图 7.3 所示:


Cygwin 的安装过程时间比较长。当出现创建图标的画面点击 “ 完成 ” 按钮之后,屏幕会有几秒钟的闪动,这是在执行 Cygwin 安装后的脚本配置。


自动配置结束后,出现 Cygwin 成功安装结束的提示框。桌面上会出现 Cygwin 的图标。


3. 在 Cygwin 下生成交叉编译器


在自己生成交叉编译器之前,首先对 cygwin 进行一些设置。假设 Cygwin 安装在 d 目录下,在打开 Cygwin 窗口之前,进入到 D:\cygwin 目录,在这个目录下,有一个文件名为 cygwin.bat 的批处理文件,编辑该文件,在第一行后加入 set CYGWIN="title" ntea ,这是因为 cygwin 的启动批处理文件需要启动 Unix 文件系统模拟。修改完毕后,保存后退出。双击桌面上的 Cygwin 图标,打开后默认用户为在 Windows 中登录的用户名 ( 这里所使用的操作系统是 windows 2000 professsional) ,在如图7.5 所示的界面中,在根目录 ( 即 D:\cygwin) 下键入:


cd bin


mv sh.exe sh-original.exe


ln – s bash.exe sh.exe


做上述几步的原因是因为大多数 linux 系统将 sh 符号链接到 bash , Cygwin 上的 sh.exe 和 bash.exe是不同的,因此必须用 bash 代替 sh 。


从网站 http://www.uclinux.org/pub/uClinux/arm-elf-tools/tools-20030314/ 上下载生成工具链的各种源码 ,根据脚本文件 build-uclinux-tools.sh 建立可在 windows 下编译用户应用程序的交叉编译器,生成的交叉编译器最终被打包为 arm-elf-tools-cygwin-yyyymmdd.tar.gz 的文件,其中 yyyy 为生成交叉编译器的年, mm 为生成交叉编译器的月份, dd 为日期。


这里,希望读者注意的是在生成交叉编译器的过程中,可能会遇到多次错误,读者应该根据给出的出错信息,进行相应文件的修改。由于习惯上的原因, linux 下的压缩文件一般都是以 .tar.gz 或者 .tgz 结尾的,虽然用 windows 下的解压软件比如 winzip 或者 winrar 可以解压这些文件,但是推荐读者不要用这些软件在 windows 下解压,因为这样可能会造成某些信息的丢失。


ARM使用的交叉编译器名为 arm-elf-tools-cygwin-20030502.tar.gz 。


在 Cygwin 环境下建立交叉编译器


在根目录下键入:


tar xvzf arm-elf-tools-cygwin-20030502.tar.gz


进行交叉编译器的解压,解压完毕后在 /usr/local/bin/ 目录下可以看到各种 GNU 工具。有了交叉编译器后,熟悉 Windows 的读者就可以在 Windows 下编译在 uClinux 上运行的应用程序了。

文章评论1条评论)

登录后参与讨论

用户209490 2009-5-23 21:06

请问我安装以后 为什么打开bash的时候 它只是闪烁了一下 就消失了.?
相关推荐阅读
用户1314913 2014-09-15 21:08
电容降压
  qzlbwang 这个帖子的目的: 1、帮助初学者正确理解电容降压问题。消除某些容易产生的误区。 2、让其达到“知其然,知其所以然”的目的。 3、学会正确进行估算和进行比较精确的计...
用户1314913 2013-11-06 10:58
叙情
   心若亲近,言行必如流水般自然; 心若疏远,言行只如三秋之树般萧瑟。 不怕身隔天涯,只怕心在南北!新一天,是否还存在彼此心里? ...
用户1314913 2013-11-06 10:07
你见过最糟糕的产品设计有哪些!!
  ...
用户1314913 2011-10-21 20:38
航模很有意思
...
用户1314913 2011-10-21 20:32
笑话
专业维修核潜艇、反应堆,核弹头翻新,抛光,打蜡.回收二手航母,清洗航母油槽、航天飞机保养换三滤.高空作业擦洗卫星表面除尘.批发歼10,F22 F35 B2轰炸机,各类核弹头。量大从优!有发票!全面接受...
用户1314913 2011-03-20 09:42
Proteus中的以太网物理接口模型
以太网物理接口模型 介绍 Proteus中的以太网物理接口模型提供了一种从仿真电路图访问本地网络的方法。 仿真的网络控制器模型通过现有的以太网卡连接到本地网络。现在Proteus提供了两种以太网卡模型...
我要评论
1
7
关闭 站长推荐上一条 /2 下一条