OpenWrt基本知识
1. 编译OpenWrt
OpenWrt编译系统 – 安装
OpenWrt编译 – 说明
2. OpenWrt目录结构
2.1 bin(输出)
bin目录存放make的结果:
OpenWrt编译好的开发环境,比如toolchain, SDK,Image制作工具
package安装包(ipk包)
烧入路由器的bin文件
2.2 build_dir(编译源码)
build_dir存放的是软件源码目录,解压缩后的程序源码均放在该目录,build_dir下的子目录如下:
host:建立目标工具链时的临时目录,比如automake, autoconf, flex, sison, gettext,libtool等
linux-ar71xx_generic: 存放kernel,mtd等源码
target-mips_r2_uClibc-0.9.33.2:package编译的临时目录, 比如存放bzip, curl等等
toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2: 对应硬件的工具链的目录,存放的是编译toolchain所需的一些源码包,比如uClibc, binutils,gcc等源码包
2.3 staging_dir(编译输出)
用于存放构建目标系统(如MIPS, ARM等)镜像的工具软件
host: 宿主系统使用的工具
target-mips_r2_uClibc-0.9.33.2: 目标系统使用的软件包
toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2: 目标系统的工具链
build_dir是编译的地方,那么这里就是把build_dir的结果放在了staging_dir目录了。
2.4 dl (下载包)
软件源码包download目录,通过网络下载的软件包(.tar.bz2, .tar.gz, *.tar.xz)均存放在此目录,一般编译某个软件时会从此目录找对应的软件源码包,然后解压到指定的源码目录中
如果此目录没有对应软件的源码包,则根据此软件Makefile文件中指定的网络地址去下载,下载好的软件包会自动存放在该目录
2.5 docs(文档目录)
存放的是.tex文件,需要使用latex编译输出PDF后才可以阅读
2.6 package
存放基础的软件包
比如busybox, hostapd, firewall, fuse
一个子目录对应一个软件包,软件包组成:
Makefile文件:内部包含着软件的名字和版本,以及下载该软件包服务器网络地址;
patch目录:下载好对应版本的软件包后,打上对应的patch;
files目录:存放此程序的默认配置文件;
2.7 feeds
存放扩展的软件包, 指导如何下载和编译对应的模块
make之后的新增目录。里面存放的就是按照feeds.conf.default文件中列举的要处理的文件,所展开得到的目录。目录中存放的东西,和package目录中大致相似。
feeds中的软件扩展了OpenWrt的基本功能,它将所有的软件链接到package/feeds中。这些软件大多数都是编译成.ipk格式的。这里面有内核模块文件,各种软件的源码,以及patch文件和Makefile用来下载源码的。
./scripts/feeds update -a: 升级所有扩展软件源列表 (这一步的结果是:产生$(TOPDIR)/feeds目录,存放的就是执行 feeds.conf.default文件后的结果:从指定svn中下载的文件)
./scripts/feeds install -a:安装所有扩展软件 (这一步的结果是:在package目录中多了一个feeds目录,里面存放的子目录是到$(TOPDIR)/feeds目录的链接)
在$(TOPDIR)/Makefile中有如下定义:
# update all feeds, re-create index files, install symlinks
package/symlinks:
$(SCRIPT_DIR)/feeds update -a
$(SCRIPT_DIR)/feeds install -a
所以使用make package/symlinks即可执行以上两步操作。
2.8 include
存放的是编译时所需要的一些通用的Makefile脚本, 编译时会include该目录中的makefile脚本
2.9 scripts
存放一些程序的脚本,可通过./script/feeds search/install 进行搜索或者安装相关软件;
2.10 toolchain
OpenWrt编译目标toolchain时依赖的Makefile、配置文件和源码。
页:
[1]