OpenWrt基本知识

1. 编译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、配置文件和源码。

猜你喜欢

转载自blog.csdn.net/myarrow/article/details/80433481