--------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先把uClinux下载回来,下载地址:
然后再根据网站里的说明建立一个交叉编译环境:
先把arm-elf-tools安装好,然后再编译uClinux即可:
[ljjk @localhost root]#wget
[ljjk @localhost root]#wget
[ljjk @localhost root]#chmod 777 arm-elf-tools-20030314.sh
[ljjk @localhost root]#./arm-elf-tools-20030314.sh
[ljjk @localhost root]#tar zxvf uClinux-dist-20051110.tar.gz
[ljjk @localhost root]#cd uClinux-dist
[ljjk @localhost uClinux-dist]#make mrproper
[ljjk @localhost uClinux-dist]#vi linux2.4.x/arch/armnommu/vmlinux-armv.lds.in
在__sto__kallsyms = ,;
*(.got)后面加上:
romfs_data = .;
romfa.o
romfs_data.end = .;
然后wq退出
这一步如果不做,编译的时候会出现点小问题,我便宜的时候提示过romfs_data出错。
[ljjk @localhost uClinux-dist]#vi vendors/Samsung/4510B/Makefile
在genromfs -v -V "ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR)的下一行加入
arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)
然后wq保存退出
[ljjk @localhost uClinux-dist]#make menuconfig
这
时出现一个选择菜单,移动到第一个选项高亮,然后按回车进入,这时有两个可选项,一个是第二行,一个是第四行,第二行是用来选择支持的产品结构的(就是我
们平时说的硬件平台),第四行是用来选择Products的!分别选择samsung,和4510B,因为这两个在我们中用的是比较多的!
然后选择Exit回到主菜单,把高亮调到Kernel/Library处,进入。kernel选择2.4.x的即可,lib库选择uC-libc,如果不行的话则改为uClibc。,然后Exit之后再Exit,弹出提示,选择yes保存即可。
[ljjk @localhost uClinux-dist]#make dep
[ljjk @localhost uClinux-dist]#make lib_only
[ljjk @localhost uClinux-dist]#vi config/.config
然后将"CONFIG_USER_OLD_PASSWORDS=y"注释掉"#CONFIG_USER_OLD_PASSWORDS=y"
[ljjk @localhost uClinux-dist]#make user_only
[ljjk @localhost uClinux-dist]#make romfs
[ljjk @localhost uClinux-dist]#make image
如果这一步提示错误,可以执行下面一步
[ljjk @localhost uClinux-dist]#make
这样就会在image下生成我们想要的文件。
[ljjk @localhost uClinux-dist]ls romfs
bin dev etc home lib mnt proc sbin tmp usr var doc written by 1jjk
[ljjk @localhost uClinux-dist]ls image
image.bin linux.data linux.text romfs.img
到这里就完成了编译的工作。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
其实在编译内核的时候并不是这么顺利,遇到过很多问题。比如因为交叉编译环境没编译好而导致源码编译的时候总是出问题,还有对于上面文件的修改错误而导致总是报错
。由于是刚开始,这些错误即使看见了也不知道怎么回事,后来通过在网上查找资料渐渐的也就熟悉了。记下这篇文章以便查阅
。