免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1494 | 回复: 1
打印 上一主题 下一主题

uclinux编译 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-12 22:20 |只看该作者 |倒序浏览

uClinux Image Compiling User Guide2 for lumit4510 : how to compile uClinux kernel
说明: 本小节内容是关于如何编译一个可以运行的 uClinux Kernel ( 基于 20040408  版 )
-------------------------------------------------------------------------
这篇文档详细说明了如何从 RedHat9.0 开始,建立交叉编译环境,编译 uClinux 内核,
如何通过 SkyEye 模拟器进行事先验证,然后再下载到真实开发板执行,最后添加自己的应用程序。
有 linux pc 环境的可以在自己的机器上面动手试试,特别适合于还没有开发板的初学者。
**************************************************************************
Step 0 :  安装交叉编译器 GNU Toolchain
1. 下载 arm-elf-tools-20011219.tar.gz

http://159.226.40.150/lumit/resources/uClinux/Toolchain/arm-elf-tools-20011219.tar.gz
2. 下载 arm-elf-tools-20030314.sh

http://159.226.40.150/lumit/resources/uClinux/Toolchain/arm-elf-tools-20030314.sh
3. 这两个文件需要在同一个目录下,arm-elf-tools-20030314.sh 是一个可以自动安装的脚本文件
   改变属性为可执行文件:
chmod 755 arm-elf-tools-20030314.sh  
4. 执行脚本即可完成交叉编译器的安装
./arm-elf-tools-20030314.sh
5. 测试一下,输入 arm-elf-gcc 看看是否能够自动补齐?
[admin@localhost admin]$ arm-elf-gcc -v
Reading specs from /usr/local/lib/gcc-lib/arm-elf/2.95.3/specs
gcc version 2.95.3 20010315 (release)(ColdFire patches - 20010318 from
http://fiddes.net/coldfire/)(uClinux
XIP and shared lib patches from
http://www.snapgear.com/
)
[admin@localhost admin]$ which arm-elf-gcc
/usr/local/bin/arm-elf-gcc   
表明 arm-elf-gcc 已经安装在 /usr/local/bin/ 目录下了。
Step 1 :   交叉编译 uClinux 内核
1. 下载 uClinux-dist-20040408.tar.gz 到当前工作目录下
        
http://159.226.40.150/lumit/resources/uClinux/uClinux-dist-20040408.tar.gz
2. 解压 uClinux-dist-20040408.tar.gz 文件到 uClinux-dist 目录
        tar xvzf uClinux-dist-20040408.tar.gz
   此时当前工作目录下增加了一个名为 uClinux-dist 的目录。
3. 进入 uClinux-dist 目录
        cd uClinux-dist
4. 修改 vmlinux-armv.lds.in 文件,
        vi linux-2.4.x/arch/armnommu/vmlinux-armv.lds.in
   在
*(got)  /* Global Offset table */
之后添加如下语句:
romfs_data = .;
romfs.o
romfs_data_end = .;
   即修改为:
     65                 *(.got)                 /* Global offset table          */
     66
     67                 /* add by lumit -
http://www.lumit.org
*/
     68                 romfs_data = .;
     69                 romfs.o
     70                 romfs_data_end = .;
5. 修改 vendors/Samsung/4510B/Makefile 文件,
        vi vendors/Samsung/4510B/Makefile
   在 image 目标的第三行,增加一条语句:
arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)
   如下为增加之后:
     63 image:
     64         [ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
     65         genromfs -v -V "ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR)
     66         arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)
     67         $(CROSS_COMPILE)objcopy -O binary --remove-section=.romvec \
     68                         --remove-section=.text --remove-section=.ramvec \
     69                         --remove-section=.init \
     70                         --remove-section=.bss --remove-section=.eram \
     71                         $(ROOTDIR)/$(LINUXDIR)/linux $(IMAGEDIR)/linux.data
6. make menuconfig
   在 Vendor/Product Selection  --->    中选择
--- Select the Vendor you wish to target  
(Samsung) Vendor
--- Select the Product you wish to target
(4510B) Samsung Products
                           
   在 Kernel/Library/Defaults Selection  --->   中选择
(linux-2.4.x) Kernel Version                              
(uClibc) Libc Version  
其他选项都不变,按照缺省设置,选择退出,保存配置。
7. make dep
8. make lib_only
9. make user_only
[说明] 编译login,boa程序时可能出现 undefined reference to 'crypt_old'的错误,
boa.elf2flt: In function `auth_check_userpass':
/tmp/liming/uClinux-dist/user/boa/src/auth.c:281: undefined reference to `crypt_old'
可以修改
config/.config
注释掉第25行的 CONFIG_USER_OLD_PASSWORDS
如下:
     24 CONFIG_USER_LOGIN_LOGIN=y
     25 # CONFIG_USER_OLD_PASSWORDS=y
     26 # CONFIG_USER_ONLY_ROOT is not set
然后再
cd user/boa/src/
rm *.o
重新编译 make user_only 一下这个目录里面的 obj 文件就可以了。
10. make romfs
11. make
arch/armnommu/mm/mm.o: In function `free_initmem':
/tmp/liming/uClinux-dist/linux-2.4.x/arch/armnommu/mm/init.c:240: undefined reference to `machine_is_ta7v'
这个错误只要注释该文件的相关代码即可。
    655 void free_initmem(void)
    656 {
    657         if (!machine_is_integrator() &&
    658             !machine_is_p52() &&
    659             !machine_is_cx821xx() &&
    660             !machine_is_atmel() &&
    661             !machine_is_netarm() &&
    662 //          !machine_is_ta7v() &&
    663             !machine_is_ta7s()) {
    664                 free_area((unsigned long)(&__init_begin),
    665                           (unsigned long)(&__init_end),
    666                           "init");
12. make image
此时得到 linux-2.4.x/linux 文件和 image.bin
Step 2:   通过 SkyEye 测试刚才编译得到的 linux-2.4.x/linux 内核是否可以运行。
[详细过程在另一篇文档中有说明,这里不再重复,可以参考看]
http://www.lumit.org/download/document/lumit-skyeye-uclinux.txt
Step 3:   如果 SkyEye 模拟器上测试通过了,那么就可以下载到 lumit4510 开发板试试了。
[详细过程在另一篇文档中有说明,这里不再重复,可以参考看]
http://www.lumit.org/download/document/lumit-uclinux-readme.txt
Step 4:   如果在 lumit4510 上可以运行 image.ram ,那么就可以添加自己的应用程序了。
[详细过程在另一篇文档中有说明,这里不再重复,可以参考看]
http://www.lumit.org/download/document/lumit-uclinux-addapp-readme.txt

┌-------------------------------------------------------------------------┐
│                                                                         │
│    Welcome to visit
http://www.lumit.org
for more information           │
│                                                                         │
│                  [lumit] - let us make it together                      │
│                                                                         │
│                                                                         │
│                                         lumit-admin    │
│                                                                         │
└-------------------------------------------------------------------------┘



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/24980/showart_276735.html

论坛徽章:
0
2 [报告]
发表于 2012-10-26 16:03 |只看该作者
我还是不会装,终于还是谢谢你的答案
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP