环境说明:
主机: windows XP IP设为10.0.22.79
开发板:君正4740,操作系统为Linux IP设为10.0.22.200
目录:
一 关于Cygwin
二 Cygwin的安装
三 gcc的使用,以编译运行c文件和c++文件为例
四 交叉编译环境的搭建
五 NFS的搭建
六 将交叉编译环境集成到Eclipse中
一.关于Cygwin:
1 cygwin 是windows平台上运行的unix模拟环境,它对于学习unix/linux操作环境,或者从unix到windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用gnu工具集在windows上进行嵌入式系统开发,非常有用。
2. cygwin只是模拟一个unix的环境有助于初学者学习,现在也可以在windows下开发一些程序。但他所支持的命令没有新版本的LINUX多,它是一个不是很完整的UNIX系统。
3. vmware,qemu等虚拟机软件,以vmware为例,是先在windows中安装vmware虚拟机,再在vmware虚拟机上面用linux 光盘或iso镜像安装完整的linux系统,vmware功能是虚拟一个cpu。与用虚拟机相比,Cygwin本身就是linux在windows环境下的部分替代物,占用资源相对较少,同时功能与“真实感”也更小,还有些不完善之处。
二.Cygwin的安装:
我们可以到Cygwin的官方网站下载Cygwin的安装程序,地址是:
http://www.cygwin.com/
或者直接使用下载连接来下载安装程序,下载连接是:
http://www.cygwin.com/setup.exe
下载完成后,运行setup.exe程序,出现安装画面。直接点“下一步”,出现安装模式的对话框,如下图所示:
我们看到有三种安装模式[因为网速问题,笔者推荐用第二、三种,即先下载再安装,而且第二步过后,查看一下安装目录的大小,如果安装全部组件的话大小应该在1.4G多,如果过小需要重新下载]:
从上述三种模式中选择适合你的安装模式,这里我们选择第一种安装模式,直接从网上安装,当然在下载的同时,Cygwin组件也保存到了本地,以便以后能够再次安装。选中后,点击“下一步”,
这一步选择Cygwin的安装目录,以及一些参数的设置。默认的安装位置是C:/cygwin/,你也可以选择自己的安装目录,然后选择“下一步”,
这一步我们可以选择安装过程中从网上下载的Cygwin组件包的保存位置,选择完以后,点击“下一步”,
这一步选择连接的方式,选择你的连接方式,然后点击下一步,会出现选择下载站点的对话框,如下图所示,
在这一步,需要注意,为了获得最快的下载速度,我们首先在列表中寻找Cygwin中国镜像的地址:http://www.cygwin.cn,如果找到就选中这个地址;如果找不到这个地址,就在下面手动输入中国镜像的地址:http://www.cygwin.cn/pub/,再点击“Add”,然后再在列表中选中。选择完成后,点击“下一步”,
这一步,我们选择需要下载安装的组件包,为了使我们安装的Cygwin能够编译程序,我们需要安装gcc编译器,默认情况下,gcc并不会被安装,我们需要选中它来安装。为了安装gcc,我们用鼠标点开组件列表中的“Devel”分支,在该分支下,有很多组件,我们必须的是:
binutils
gcc
gcc-mingw
gdb
鼠标点击组件前面的循环按钮,会出现组建的版本日期,我们选择最新的版本安装,下图是选中后的四类组件的截图:
|
|
|
|
选完以后,我们选择下一步,进入安装过程,如下图所示,
安装的时间依据你选择的组件以及网络情况而定。安装完成后,安装程序会提示是否在桌面上创建Cygwin图标等,点击完成退出安装程序。
# 安装完毕后在windows下设置环境变量:
点击“我的电脑-属性-高级-环境变量”,在“系统变量”列表中找到Path,编缉它,在变量值中添加cygwin的安装目录,如:D:/software/cygwin2/bin
# 在终端下访问windows上的磁盘,如D盘:$ cd /cygdrive/d 或 $ cd d:
# 在终端下运行windows的命令,如:$ cmd.exe,退回到bash shell的命令为:$ exit
三.gcc的使用:
在cygwin终端下,用vi编缉器写一个hello world.c小程序,用gcc编译后执行:
再编译运行一个c++程序:
四.交叉编译环境的搭建:
将交叉编译器(这里是君正光盘里自带的for winxp目录下的编译器,for linux的编译器不行)copy到cygwin的安装目录下,如D:/software/cygwin2/opt
在cygwin终端下解压,并在目录/etc/profile文件中添加环境变量如下:
PATH=/opt/mipseltools-gcc412-glibc261/bin:$PATH
# 检验:退出cygwin,重新启动一个终端,输入:mipsel-linux-gcc –v,如果显示版本信息,说明交叉编译环境已经搭建好。
五.NFS的搭建:
Step1.初始 NFS Server 設定
先 check 一下 nfs-server 套件是否安裝完成,
$ cygcheck -l nfs-server
查看一下nfs-server 安裝設定文件:
$ less /usr/share/doc/Cygwin/nfs-server-2.3-1.README
初始設定 nfs-server-config
$ /usr/bin/nfs-server-config
grep: /usr/share/doc/Cygwin/nfs-server-2.3-1.README: No such file or directory
This script sets up a default configuration for running an NFS server under
Cygwin. As part of this setup, the script will do the following:
1) Create a user account to run the services under [OPTIONAL]
2) Install portmap, mountd, and nfsd as Windows services
3) Create a sample exports file
4) Create a sample uid/gid mapping file.
After installing, please read the nfs-server README for Cygwin:
/usr/share/doc/Cygwin/nfs-server-2.3-1.README
This document contains notes on installation and documents known problems
and workarounds with the NFS server, ex:
Do you want to continue? (yes/no) 輸入yes
You can choose to install the services so that they run under the local system
account, or under a separate user account. Which option you should choose
depends on which version of Windows you are running:
Windows 2000 : You may run nfsd under either a local system account or
a separate user account. You _probably_ want to run under
the local system account.
Windows XP : You _must_ run nfsd under a separate user account.
If you choose to run nfsd under a separate user account, you will be prompted
for an user name and password. If the user name you supply does not exist,
it will be created.
Do you want to run nfsd under a separate user account? (yes/no) 输入yes
其中需要设置用户名与密码时,一定要设置成与windows登录一致的
Installing portmap service...
Installing mountd service...
Installing nfsd service...
Creating sample /etc/exports file...
Creating sample /etc/nfs/server.map file...
/usr/bin/nfs-server-config: line 223: UID: readonly variable
Step2.分享設定及安全性設定
設定分享的資料夾
$ vi /etc/exports (/backup資料夾先建立)
在最后一行输入下面一行,其中/opt是主机上共享的目录:
/opt 10.0.22.79/255.255.255.0
安全性設定(可跳过)
$ vi /etc/hosts.allow
portmap : 127.0.0.1 : allow //允許本機可存取
portmap : 192.168.1.0/255.255.255.0 : allow //允許此網段可存取
portmap : ALL : deny
設定好分享後記得 showmount 一下,若出現下列錯誤訊息則是因為 portmap 服務還沒啟動,所以會跟你說 rpc 有問題
$ /usr/sbin/showmount.exe
mount clntudp_create: RPC: Program not registered
Step3.服務啟動
啟動服務
cygrunsrv -S portmap
cygrunsrv -S mountd
cygrunsrv -S nfsd
停止服務
cygrunsrv -E portmap
cygrunsrv -E mountd
cygrunsrv -E nfsd
顯示服務狀態
cygrunsrv -Q portmap
cygrunsrv -Q mountd
cygrunsrv -Q nfsd
可以到任务管理器中看到服务已经启动
再运行
$ /usr/sbin/showmount
可见到类似的
Hosts on levovo-39020020
10.0.22.200
localhost
Step4. 开发板上运行
$ mount –o nolock 10.0.22.79:/opt /share
其中10.0.22.79:/opt 是主机上的共享目录,/share是开发板上的挂载目录
六.将交叉编译环境集成到Eclipse中
1.搭建windows下的交叉编译环境,参见步骤四。
注意,步骤四中在cygwin的终端下设置环境变量与在“我的电脑-属性-高级-环境变量”中添加变量Path的值的效果是相同的。
2.下载并安装Eclipse (for C/C++),下载后需要安装JDK才能运行Eclipse。
3.在Eclipse下建立一个C Project,Toolchains框中选择Cygwin GCC
4.点击Finish
5.写一个简单的c程序,编译运行后,可在windows下执行
6.现在在Eclipse下将编译器由gcc转变为mipsel-linux-gcc:
点击Project-Properties,在C/C++ Build-Settings下将Cygwin C Compiler和Cygwin C Linker中的Command值都改写为mipsel-linux-gcc(之前为gcc)
7.点击OK,重新编译链接程序,生成的可执行文件即可运行在Linux上了。