Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2123934
  • 博文数量: 229
  • 博客积分: 7217
  • 博客等级: 上校
  • 技术积分: 3224
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-19 17:23
个人简介

个人主页https://xugaoxiang.com,微信公众号: Dev_Club 或者搜索 程序员Club

文章分类

全部博文(229)

文章存档

2017年(1)

2016年(20)

2015年(23)

2013年(1)

2012年(23)

2011年(68)

2010年(62)

2009年(31)

分类: LINUX

2009-06-11 15:49:21

uClinux:

vendors: 目标处理器相关,包括脚本,该处理器的默认的配置文件,在这里增加对目标处理器的支持
openswan: IPsec相关
config: 配置内核 make menuconfig&&xconfig&&config相关脚本
   scripts/lxdialog: 实现内核配置时的菜单、消息(配置选择框)等的脚本文件
   scripts/Menuconfig: (make menuconfig)实现配置选项的选择、取消、设置为模块、帮助工
tools: ucfront:gcc(ucfront-gcc,ucfront-g++)和ld(ucfront-ld)
bin: 产生flash image文件相关
autoconfig.h: 默认的make menuconfig的配置文件
config.arch: 由目标处理器产生的config文件
Makefile: 默认编译的是2.6内核(在make menuconfig里可选)
bin: flash相关
lib: 库文件夹:*.c、*.h
include: 指向lib下的*.h头文件
user: 用户应用程序,在这里增加应用程序


编译uClinux:

在 下载arm-elf-tools-20030314.sh(./arm-elf-tools-20030314.sh出错,不知道为什么,好象跟gzip有点关系),改为从<下载arm-linux-tools-20030930.tar.gz>(这个工具是把gcc编译的文件格式转换成uCLinux可执行的文件格式flat用的), 解压后替换原来/usr/local(注意备份原来的local目录),这个包的功能是安装工具链。
在 下载uClinux-dist-20070130.tar.gz
执行tar zxvf uClinux-dist-20041215.tar.gz并进入uClinux-dist目录。

make menuconfig(在此选择目标处理器和内核版本,配置内核和应用程序)
make dep (2.6内核好象不用)
make

增加glibc库:
   
   只需在uClinux-dist目录下增加一目录glibc,把相关的源代码文件放在该目录中。

如何增加应用程序:

1、user/Makefile : 增加如下一行
     dir_$(CONFIG_USER_NEWAPP_NEWAPP)   += newapp
2、config/Configure.help:增加如下一行
     CONFIG_USER_NEWAPP_NEWAPP
        This program does fooey things to your bars.
3、config/config.in : 增加下列内容
     bool  'newapp'  CONFIG_USER_NEWAPP_NEWAPP
     bool  'bar'       CONFIG_USER_NEWAPP_BAR (如果user/newapp包含有make 'newapp'和'bar'的代码,就加上这句)
4、usr/newapp/Makefile : 内容如下(newapp下只有一个可执行文件的情况)
     EXEC = newapp
     OBJS = newapp.o
    
     all : $(EXEC)

     $(EXEC): $(OBJS)
            $(CC) $(LDFLAGS)  -o  $@ $(OBJS) $(LDLIBS)

     romfs :
            $(ROMFSINST)   /bin/$(EXEC)

     clean :  
            -rm -f $(EXEC) *.elf *.gdb *.o
 
arm-elf-tools生成的文件是flat格式,一种2进制文件格式
arm-linux-tools 生成的文件格式是elf,一种可以在x86体系下运行的可执行文件格式。
安装arm-elf-tools-20030314.sh(以root身份)
 ./arm-elf-tools-20030314.sh
If you get the error message 'tail: cannot open `+43' for reading: No such file or directory' when installing, change line 39 from:
tail +${SKIP} ${SCRIPT} | gunzip | tar xvf -
to:
tail -n+${SKIP} ${SCRIPT} | gunzip | tar xvf -

根目录下的Makefile文件:

     make menuconfig项执行流程:
          首先读入根目录下的config.in文件,该文件的作用是:在敲入make menuconfig之后,出现选择vendor,选定目标处理器后,再选择对应目标的不同型号的产品,选择内核版本、LIBC类型、导入、导出配置文件及其默认的值。
          然后读入/config/script/lxdialog文件夹的内容,进行菜单,选项框等的设置。
          最后读入的是/config/script/Menuconfig文件,配置内核,包括三态(*,空,M),选项帮助(调用的是/config/Configure.help文件),查看readme(/config/script/README.Menuconfig文件),导入、导出配置文件。
          保存内核配置,执行/config/setconfig设置默认配置。
     make操作时会自动完成内核、C库、应用程序的编译。

uClibc/libc/sysdeps/linux
     与uClibc关联的目标处理器类型。If want to port uClibc to some new Linux architecture(mips,etc),this is the place to add that support.

uclinux/vendors/config:
     对应各种平台的编译器、连接器,汇编器,CC、CXX
    

在linux特定版本目录下(如linux-2.6.x)配置特定目标处理器:
make arch=arm menuconfig

/uclinux-dist/tools/ucfront/ucfront.c:
     查找编译器,查找GCC文件,添加共享库相关函数实现。
    
.PHONY : clean
     .PHONY表示clean是伪文件,在Makefile文件中,make时不会自动执行,make clean时才执行。

查看包含特定字符串的文件:
     find /workshop/uclinux -print |xargs grep CROSS_COMPILE 或
     find / -name "*" -exec grep " CROSS_COMPILE " {} \; -print

查看文件占用空间:
     du -h 可查看文件、目录的占用空间
     df 查看已挂载的文件系统的空间使用情况

sh-linux-tools-20021008.tar.gz:
      HITACHI
I386-linux-tools-20070808.tar.gz:
      Soekris
M68k-elf-tools-20061214.sh:
      SnapGear
Sparc-elf-tools-.tar.gz:
      LEON-TSIM

Vendor目录下的目标处理器由特定交叉工具链来编译

步骤(不直接使用make):
1.    make menuconfig
2.    make dep:只有第一次编译的时候需要
3.    make lib_only :编译uclibc
4.    make user_only :编译应用程序
5.    make romfs :组织成根文件系统
6.    make image :生成romfs的镜像文件和linux的镜像文件
7.    make linux :编译linux内核,需要第6步生成的romfs.o文件
8.    make image :得到uclinux可执行文件的镜像

可用的交叉工具链:
   

 
阅读(2003) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~