Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1222761
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: 嵌入式

2009-12-18 11:21:15

为了在 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 实现的更详细描述,请参考 。

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 上运行的应用程序了。


1.         安装Cygwin运行安装程序,进入Select Packages,Base,Devel, Libs下安装包全选,其他安装包酌情选择。选择安装目录如C:\Cygwin
2.         下载脚本文件
3.         将buildroot-snapshot.tar.bz2复制到C:\cygwin\usr\src下
4.         运行cygwin的shell,在cygwin环境里用tar –xvjf解压缩buildroot-snapshot.tar.bz2
tar xvjf buildroot-snapshot.tar.bz2
cd buildroot
5.         配置uClibc 编译系统
make menuconfig
    里面有许多配置,我的配置是arm ,arm920T;在buildroot里选择所需的交叉编译工具及其版本。我选择的是linux2.6.19.2 kernel headers,uClibc 0.9.28,binutil 2.17,gcc3.4.2,gdb6.3等
6.         下载这些编译工具源码包到目录buildroot\dl。
7.         建立Uclibc交叉编译工具链。
make
8.         如遇到编译错误,则继续make,直至编译结束,编译完成后,将在usr\src\buildroot下生成build_arm文件夹,里面的staging_dir\bin目录下的文件便是我们的编译工具
9.         将C:\cygwin\bin下cygwin1.dll拷贝到你的buildroot目录下build_arm\staging_dir\bin里面。
10.     将编译路径加入到环境变量中:
在cygwin的shell 里执行PATH=$PATH:/usr/src/buildroot/build_arm/staging_dir/bin
11.     这样就可以在cygwin下用arm-linux-gcc 来编译程序了,用法
arm-linux-gcc source.c
阅读(1366) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~