今天编译uClinux-Samsung通过了。
uClinux-Samsung是移植到Samsung的uClinux,你可以上网获得源码。在PC机上编译uClinux需要交叉编译工具链,你可以在uclinux的网站上下载到,我使用的是arm-elf-tools-20030314.sh,可以在这儿下到。
执行这个脚本就可以安装好交叉编译工具了。然后只要你有uclinux的源码,你就可以开始编译了。对了,你的linux还必须安装了Ncurse包,不过现在的系统一般提供libncurses代替。
我简要记录了一下安装过程:
1.make menuconfig或make xconfig
你要选择你所要的对应平台,我选择的是Samsung4510,内核我选了2.4,因为项目所需。至于libc库有uClibc和uC-libc,两者有些区别。uClibc是uC-libc的派生体,所有API都是标准化的,uC-libc不全是标准的,但是对coldfire平台有特殊扩展支持,详细区别可以参看这儿。保存之后就可以开始下一步了。
2.make dep
3.make lib_only
4.make user_only
这个过程中可能出现关于netstate.o的错误,这个好像是和内核版本有关系,你找到/uClinux-samsung/user/route/下的netstate.c,将line宏定义那行的值4096改成2048就可以了。
5.make romfs
6.make image
注意做到这一步的时候可能会出现错误的信息提示,类似于:
arm-elf-objcopy: /home/nie/uClinux-Samsung/linux-2.4.x/linux: No such file or directory
make[1]: *** [image] Error 1
make[1]: Leaving directory `/home/nie/uClinux-Samsung/vendors/Samsung/4510B’
make: *** [image] Error 2
可以跳过这个错误,不管。
7.make
编译过程中会出现很多错误,编译的详细错误可以参考这个网页,它给出了大多的情况。
范小川 于 2010-11-06 15:50:51发表:
用的是哪个版本的uclinux源码包?难道没有打补丁什么的?samsung的芯片型号是多少都交代清楚了。