2024年4月2日发(作者:)

openwrt增加软件包及内核模块总结

openwrt增加软件包及内核模块总结

------ by flb 2016.8.17

一、openwrt的目录结构

上图为openwrt的目录结构,其中第一行为原始目录,第二行是编译过程中生成的目

录。各目录的作用如下:

tools:编译时需要一些工具, tools里包含了获取和编译这些工具的命令。里

面是一些Makefile,有的可能还有patch。每个Makefile里都有一句 $(eval $(call

HostBuild)),表示编译这个工具是为了在主机上使用的。

toolchain:包含一些命令去获取kernel headers, C library, bin-utils,

compiler, debugger。

target:各平台在这个目录里定义了firmware和kernel的编译过程。 package:包

含针对各个软件包的Makefile。openwrt定义了一套Makefile模板,

各软件参照这个模板定义了自己的信息,如软件包的版本、下载地址、编译方式、安

装地址等,用户可在该目录下增加自己的软件包。

include:openwrt的Makefile,mk都存放在这里。 scripts:一些per脚本,用于

软件包管理。

dl:软件包下载后都放到这个目录里。

build_dir:软件包都解压到build_dir中,然后在此编译。

staging_dir:最终安装目录。tools,toolchain被安装到这里,rootfs也会放

在这里。

feeds:

bin:编译完成后,firmware和各ipk会放到此目录下。

二、增加应用层软件模块软件包

加入的软件包可以是网上下载的开源软件或自行开发的软件。若需增加一个应用层软

件,则需要在package目录下创建一个目录,以包含软件包的各种信息和与openwrt建

立联系文件。openwrt有其Makefile模版,使之能方便的增加软件包;建立一个软件包

不需要太多工作,大部分工作都隐藏在其它的makefile中,编写工作被抽象成对几个变量

的赋值。编写的规则如下。 1、引入文件

openwrt使用三个makefile的子文件,分别为: include $(TOPDIR)/

include $(*****_DIR)/ include $(*****_DIR)/