分类: 嵌入式
2009-12-18 11:21:15
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 实现的更详细描述,请参考 。
Cygwin 软件的安装
要得到 Cygwin 的最新安装版本,请到 Cygwin 的主页 上下载最新的 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 。
从网站 上下载生成工具链的各种源码 ,根据脚本文件 build-uclinux-tools.sh 建立可在 windows 下编译用户应用程序的交叉编译器,生成的交叉编译器最终被打包为 arm-elf-tools-cygwin-yyyymmdd.tar.gz 的文件,其中 yyyy 为生成交叉编译器的年, mm 为生成交叉编译器的月份, dd 为日期。
这里,希望读者注意的是在生成交叉编译器的过程中,可能会遇到多次错误,读者应该根据给出的出错信息,进行相应文件的修改。由于习惯上的原因, linux 下的压缩文件一般都是以 .tar.gz 或者 .tgz 结尾的,虽然用 windows 下的解压软件比如 winzip 或者 winrar 可以解压这些文件,但是推荐读者不要用这些软件在 windows 下解压,因为这样可能会造成某些信息的丢失。
本书生成的交叉编译器名为 arm-elf-tools-cygwin-20030502.tar.gz 。
在 Cygwin 环境下建立交叉编译器
在根目录下键入:
tar xvzf arm-elf-tools-cygwin-20030502.tar.gz
进行交叉编译器的解压,解压完毕后在 /usr/local/bin/ 目录下可以看到各种 GNU 工具。有了交叉编译器后,熟悉 Windows 的读者就可以在 Windows 下编译在 uClinux 上运行的应用程序了。