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
指定的仓库下载的package
和feed
中Makefile中指定版本的各种源码包。
build_dir和staging_dir
- 执行make时自动在
build_dir
中解压需要参与编译的代码包后才开始在build_dir
开始代码的编译 -
staging_dir
用于保存build_dir
中编译完成的软件
推荐阅读