openwrt (二)目录结构及用途

目录结构:

├────────────────/*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/
      acl@              ctorrent@            flashrom@     ktap@          liboil@         
      luabitop@         mwan3@               perl-compress-bzip2@         rtorrent@
      ......
    
      $ 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 
    
      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 (二)目录结构及用途)