欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

openwrt (二)目录结构及用途

程序员文章站 2022-06-09 18:58:18
...

目录结构:

    ├────────────────/*build生成*/──────  bin
    ├────────────────/*build生成*/────── build_dir
    ├────────────────/*build生成*/──────staging_dir
    ├── config  //默认的项目配置,如:defconfig_pxa1826p501
    ├────────────────/*build生成*/────── dl
    ├── docs  //文档路径
    ├── external  
            ├── management  //marvell定制过的包管理
            ├── routing     //marvell定制过的路由服务
            └── subpack  //marvell定制的package patch
    ├────────────────/*build生成*/────── feeds
    ├────────────────/*build生成*/────── host
    ├── include  //openwrt的makefile编译核心
    ├── marvell  //marvell定义的外部代码,uboot、kernel等使用这里的代码
            └── (fastpath  fota  linux  lte-telephony  obm  services  swd  uboot  webui)
    ├── package   //openwrt的基础软件包
    ├── scripts  //host端源码包管理的各类工具脚本
    ├────────────────/*build生成*/────── staging_dir
    ├── target  //平台相关的文件、固件、kernel patch等
    ├── toolchain  //编译工具依赖的工具、头文件等
    └── tools  //编译工具依赖的工具、头文件等

config目录

保存的平台相关的defconfig,make menuconfig 配置好后可以将.config保存起来,方面产品形态的定义。

  $ ls
  Config-build.in   Config-kernel.in         defconfig_pxa1826p307  defconfig_pxa1826p503  
  Config-devel.in   defconfig_pxa1826        defconfig_pxa1826p501  defconfig_pxa1826p601  
  Config-images.in  defconfig_pxa1826aquila  defconfig_pxa1826p502  

下次重编该产品只需要执行:

  $ make defconfig_pxa1826
  $ make -jxx V=s

include目录和Makefile

编译系统核心,后面会分析

package和feeds

  • package目录是openwrt的基础软件包定义
  • feeds是扩展的软件包,feeds的软件包仓库地址可以通过feeds.conf.default指定。
  • package/feeds/packages/里面的软件包是feeds.conf仓库中定义的,执行./scripts/feed install -a后会将软件包链接到这里

    $ ls -F package/feeds/packages/
    [email protected]              [email protected]            [email protected]     [email protected]          [email protected]         
    [email protected]         [email protected]               [email protected]         [email protected]
    ......
    
    $ ls -l package/feeds/packages/mwan3
    lrwxrwxrwx 1 tjd tjd 33 May 15 15:43 package/feeds/packages/mwan3 -> ../../../feeds/packages/net/mwan3
    
  • 软件包里包含该软件包的配置文件、相关应用脚本、和针对官方版本的patch:

    $ tree -L 2 feeds/packages/net/rsync/
    feeds/packages/net/rsync/
    ├── Config.in
    ├── files
    │   ├── rsyncd.conf
    │   └── rsyncd.init
    ├── Makefile
    └── patches
          └── 000-CVE-2014-9512.patch
    
    $ cat feeds/packages/net/rsync/Makefile
    include $(TOPDIR)/rules.mk
    
    #下面三个拼接成要下载的文件名
    PKG_NAME:=rsync
    PKG_VERSION:=3.1.1
    PKG_RELEASE:=2
    
    #要下载的文件名
    PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
    #下载地址
    PKG_SOURCE_URL:=http://rsync.samba.org/ftp/rsync/src
    #MD5校验码
    PKG_MD5SUM:=43bd6676f0b404326eee2d63be3cdcfe
    PKG_MAINTAINER:=Maxim Storchak <[email protected]>
    
    PKG_INSTALL:=1
    PKG_BUILD_PARALLEL:=1
    
    include $(INCLUDE_DIR)/package.mk
    ......
    ......
    

dl目录

feeds.conf指定的仓库下载的packagefeed中Makefile中指定版本的各种源码包。

build_dir和staging_dir

  • 执行make时自动在build_dir中解压需要参与编译的代码包后才开始在build_dir开始代码的编译
  • staging_dir用于保存build_dir中编译完成的软件
相关标签: openwrt