Openwrt 系统结构

Openwrt 系统宏观结构

  • openwrt 目录结构

    ### 系统自带目录

    config 存着系统的配置文件

    .in--->.config--->编译脚本解析

    CONFIG_HAVE_DOT_CONFIG=y

    作用: 控制整个编译过程,是整个系统的配置文件,默认配置的控制脚本,如果需要增加新的编译选项,需要按照config.in文件格式进行设计

     

    include

    Makefile----/include/.mk

    (Makefile 脚本文件)

    作用: 提供makefile的编译脚本,控制整个编译过程,解析.config文件,生成部分变量,完成各个模块的编译

     

    package

    类型目录---功能目录---软件目录

    第三方软件的Makefile模板

    作用: 提供了第三方软件的版本、下载地址、编译方法、安装地址,具有标准模板,第三方软件需要按照标准模板,自行添加软件的编译脚本

     

    scripts

    存放一些脚本,所有在编译过程中使用的脚本都会存放在此目录.

     

    target

    存放用于编译各类平台适用的二进制文件,定义了各类平台编译固件和内核的具体过程

     

    tools

    通用的编译工具

    toolchain

    嵌入式交叉编译工具

    gcc

    arm arm-linux-gcc ---编译成对应的指令集

    mips mips-linux-gcc

     

    Makefile

    顶层的Makefile,进行编译的总体工作

     

    rules.mk

    定义了系统Makefile使用的各类变量和函数

     

    feeds.conf.default

    由脚本文件feeds使用的配置文件,配置文件中定义了大量第三方软件包的下载地址

     

    ### 编译过程产生目录

    dl

    在编译过程中,各类需要下载包都保存在这个目录下 (编译过程中用的工具)

    当编译过程卡在了某个包下载问题时,可以手动下载并存放在dl包中

    feeds

    系统的软件管理包,所有的第三方应用软件,所有下载的软件包(openwrt系统自用)

    ./sripts/feeds update -a

    ./sripts/feeds install -a

     

    build_dir

    编译过程中产生的工具,交叉编译工具,最终的目标文件等都会存放在此处

    host : tools文件中各类工具编译的结果存放在host中

    target-xxxx:编译完成的目标文件,包含系统的各类软件包,内核、文件系统等

    toolchain-xxx:tools-chain交叉编译工具最终编译的结果文件

     

    bin

    编译完成后,所有的ipk包,所有的内核镜像文件都会在此

    staging_dir

    存放build_dir文件中各类编译成功的软件,所以和build_dir中的目录结构是相同,最终存放编译结果的地方

    各类系统库,头文件等都在该文件下,在自行开发ipk时,编译过程中头文件,链接动态库,链接的静态库都会保存在该子文件夹下

    tmp

    编译过程的大量临时文件都会在此

    logs

    报错日志

 

 

Openwrt 系统微观结构

1.feeds.conf.default

标准语法:src-git telephony https://git.lede-project.org/feed/telephony.git^ac6415e61f147a6892fd2785337aec93ddc68fa9

feed支持的类型:

src-git 通过git的方式从后面的链接进行下载

src-cpy 通过path进行拷贝 (通过U盘更新等)

src-bzr 通过bzr的方式从后面的链接进行下载

src-link 创建一个数据源path的symlink

src-svn 通过svn的方式从后面的链接进行下载

2. main Makefile

world:

1. 在执行make时,如果不指定任何目标,则默认目标是world

2. 如果在make时不指定OPENWRT_BUILD参数时,进入第一个逻辑,如果进行make OPENWRT_BUILD=1 则进入第二个逻辑

make V=s -j4 不会指定OPENWRT_BUILD变量

第一个逻辑:

make V=s

include $(TOPDIR)/include/debug.mk 在编译过程中各类信息的输出

include $(TOPDIR)/include/depends.mk 检查当前系统在编译内核阶段所有需要依赖的包是否安装

include $(TOPDIR)/include/toplevel.mk 解析编译world目标的规则

你可能感兴趣的:(内核模块,Openwrt,LKM,Openwrt,操作系统)