openwrt目录结构
一:目录结构
- build_dir
这是一个中间文件夹,所有代码都会拷到其中编译,代码在编译之前会拷贝一份到此目录中。为什么要拷贝呢?一个原因就是编译过程中OpenWrt可能会对其中一些代码和makefile作改动,为了安全起见,对副本进行编译。
其目录内容和staging_dir一模一样,staging_dir就是build_dir中代码的编译结果。- host:
和平台无关的一些工具、库代码 - target-arm_cortex-a7+neon-vfpv4_musl-1.1.16_eabi:
工具链源码 - toolchain-arm_cortex-a7+neon-vfpv4_gcc-5.4.0_musl-1.1.16_eabi:
和平台有关的代码,其中是一些代码包,packge中的代码包很多都会拷贝到此目录编译,自己添加的代码包也应拷贝至此目录
- host:
- staging_dir
目录保存工具、内核等所有代码的编译结果。- host:
文件夹是和平台无关的一些生成物。 - target-arm_cortex-a7+neon-vfpv4_musl-1.1.16_eabi:
根据我们所选平台和芯片产生的,对应平台的编译结果。例如对应平台的库文件和头文件。 - toolchain-arm_cortex-a7+neon-vfpv4_gcc-5.4.0_glibc-2.24_eabi:
根据所选平台生成的交叉编译工具链及库文件。
- host:
- dl
dl为源代码下载目录,在编译过程中下载的源代码包都会保存在此文件夹下 - feeds
- files
- package
此目录主要存放OpenWrt的软件包,我们自己添加的应用层代码都应存放于此文件夹,代码包存放于此文件夹并编写相应的Makefile后,在编译过程中OpenWrt会自主识别并编译。
package下的目录会根据配置的不同而不同,其中基本都是openwrt的一些应用工具包,比如utils就是一引起工具集,ls,ssh等工具的源码都在此目录下 - target
target目录下主要是和平台有关的代码,最主要的是linux文件夹。如下图:
可以看到每一个平台都对应一个文件夹,通过"make menuconfig"选择平台和芯片时就是对应的此文件夹:
可以看到里面有多种芯片型号,此中的image是最终生成固件时会调用到的,在这里可以对我们的固件做部分定制,patches是一些补丁包。base-files中的目录和linux目录相对应,很多地方都有这个文件夹。 - tool
工具集
- include
顶层通用Makefile,其它Makefile包含的Makefile都可以在这找到。 - scripts
脚本工具