这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » uclinux和skeye在cygwin上的编译

共3条 1/1 1 跳转至

uclinux和skeye在cygwin上的编译

菜鸟
2005-12-17 08:37:33     打赏

最近一直想搭一个UCLINUX的开发平台,但我没有开发板(想用SKEYE),而且机器是IBM600E的,装LINUX后显示只能达到600*800,显卡和声卡驱动在网上找不到,于是想在WINDOWS上用CYGWIN搭一个平台,在网上参考的很多,经过一个多星期的尝试,终于有所收获,拿来和大家交流一下:

第一步的话当然是需要一些源程序:uclinux-dist, arm-elf-*开发工具,在www.uclinux.org可以下到,http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20030522.tar.gz (在http://www.uclinux.org/pub/uClinux/dist/ 可以下到最新版,用MAKE MENUCONFIG不能配置,不知道是什么原因;虽然没有显示连接,但地址还是存在;大家可以下载20040408版试试);http://www.uclinux.org/pub/uClinux/arm-elf-tools/tools-20030314, (把里面的几个文件都下下来,放在一个文件夹。对于这几个文件,要说明几点:binutils可以下载最新的,http://ftp.gnu.org/gnu/binutils那么就不用升级了;uclibc因为UCLINUX-DIST里面有,所以不需要下,如果需要最新的可以在http://www.uclibc.org/downloads/下载;还需要下载gcc-2.95.3-m68k-zext.patch,可以在网上找到,也放在这个目录;genromfs-0.5.1-cygwin-020605.patch这个文件不能用,不需要,当然需要自己手工修改genromfs,不过很简单!)

第二步就是开始安装准备了,首先要有CYGWIN,安装的包可以编译系统就可以了,另外flex, cpio, byacc一定要装上去,因为它们是构造编译器的工具。把CYGWIN安装所在地的那个BAT文件中加一行(set CYGWIN=title ntea), 设置CYGWIN的环境变量,告诉它编译出能在CYGWIN上运行的交叉编译器,(对与CYGWIN环境变量,大家最好这样设置,我设置其它的,没有编译成功!);然后进入/bin, mv sh.exe sh-old.exe, ln -s bash.exe sh.exe, 然后从新登陆;

把uclinux-dist移到一个目录,比如/usr/src

tar xzf uClinux-dist-20030522.tar.gz
cd uClinux-dist
make config

vendor/product= //目标机器
kernel version= //内核
libc version= 数库
default all settings=Y
customize kernel settings=N
customize vendor/user settings=N
update default vendor settings=N

然后make dep,

回到所下载文件的那个目录;首先tar zxvf elf2flt-20030314.tar.gz; patch -p0 < elf2flt-cygwin-020612.patch; cd elf2flt; 使用编辑器elf2flt.c, 把#include <elf.c> 改成#include "elf.c"; 在这个文件里面加上

#ifndef false

#define false 0

#define true 1

#endif

再使用编辑器打开Makefile.in; (1)去掉CFLAGS = 那一行后面的 -STATIC ;在elf2flt:的下一行后面加上 -lintl(2)把install:后面的ld都改成ld.exe;ld.real都改成ld.real.exe;

然后cd ..; tar zxvf genromfs-0.5.1.tar.gz; cd genromfs; 用编辑器打开Makefile , 在以CFLAGS = -O2 -Wall开始的那个地方,在-Wall的后面加上 -Dlinux=1

然后cd ..;

先用编辑器修改build-uclinux-tools.sh,需要修改一下相关的地方:

1,修改UCLIBC和KERNEL,将你的UCLINUX-DIST下的UCLIBC,LINUX-2。**的路径加进去, 也可以在当前目录新建着两个连接;

2,如果你是用的自己下载的binutils,请将你面的binutils-2.10都修改成你下载的名称,并且在STAGE 1里面注释掉patch -p0 < binutils-2.10-full.path;

3, 在STAGE 7里面注释掉删除,解压和升级补丁;

4,在STAGE 8里面,在{MAKE} install 和下一行中间插入 cp /usr/local/m68k-elf/bin/elf2flt.exe /usr/local/bin/. ; cp /usr/local/m68k-elf/bin/flthdr.exe /usr/local/bin/.; 这两行;

就可以开始编译了,在编译之前有几点要注意:系统中没有*-linux-*, 也就是没有安装ARM的开发工具,还有,不要安装ADS等,如果有的话在WINDOWS的环境变量设置中去掉他们(path),等安装好后在加上去, 经过以上的修改后,在我的机器上可以编译了,在当前目录输入./build-uclinux-tools.sh build 2>&1 | tee error.txt就可以了,在编译过程中可能会出现错误,看一下ERROR。TXT就可以排除。

第三步就是开始用已经生成的交叉编译器编译UCLINUX了,在开始之前需要修改一下arm-elf-ld,exe文件和/usr/local/arm-elf/bin/ld.exe文件,因为我在编译内核的时候出现ld错误,说参数没有确认,我察看elf2flt下面的文件,发现arm-elf-ld.exe这个文件是一个BASH文件,加上.exe扩展名不能直接运行,而且它需要调用arm-elf-ld.real.exe这个文件。我想到一个方法:在/usr/local/arm-elf/bin/下面mv ld.exe ld; ln -s ld ld.exe; ln -s ld.real.exe ld.exe.real; 同样地在/usr/local/bin下面新建两个连接;然后在编译内核;

在cygwin上搭了开发UCLINUX的平台后,我试着编译SKEYE,从网上的资料中获取:只有0。1。1版的才支持,但找不到,于是我下了最新的版本编译一下,从它的READE中得知,需要TUN支持,于是我下了TUN的源程序,发现它只能在LINUX上编译,我修改了一下他的CONFIGURE文件,就是把那个"linux"修改成“cygwin",可以编译通过,但它把自己的文件加入了内核文件中,需要编译成模块。然后加载。但我的机器只有6G,所以这个工作没有做;直接编译SKEYE,它说没有找到模块;后来我在http://gro.clinux.org/frs/?group_id=327上找到了SKEYE FOR WIN ,我就把这个事情放下了。

现在可以在windows上面编译,调试UNLINX了,感觉要有一个IDE就好了,于是我装了个DEV-C++,我想如果把SKEYE中的功能加进去的话,能直接调试就好了,还有点就是DEV-C++不能支持cygwin的环境。

我现在刚开始学这个,我的EMAIL是pcuvw@yahoo.com.cn 望朋友们多多交流!




关键词: uclinux     skeye     cygwin     编译         

菜鸟
2006-01-14 06:03:00     打赏
2楼
skyeye真是很爽

菜鸟
2006-01-19 21:34:00     打赏
3楼
呵呵,记得当年好像俺也是这样折腾的.


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]