uclinux 下各个文件夹的作用

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:
在http://www.uclinux.org/pub/uClinux/arm-elf-tools/ 下载arm-elf-tools-20030314.sh(./arm-elf-tools-20030314.sh出错,不知道为什么,好象跟gzip有点关系),改为从(这个工具是把gcc编译的文件格式转换成uCLinux可执行的文件格式flat用的), 解压后替换原来/usr/local(注意备份原来的local目录),这个包的功能是安装工具链。
在http://www.uclinux.org/pub/uClinux/dist/ 下载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可执行文件的镜像
可用的交叉工具链:
    www.snapgear.org

你可能感兴趣的:(linux,image,user,makefile,编译器,linux内核)