OpenWrt目录结构

        在未编译前,OpenWrt目录如下:

1.       package

此目录主要存放OpenWrt的软件包,我们自己添加的应用层代码都应存放于此文件夹,代码包存放于此文件夹并编写相应的Makefile后,在编译过程中OpenWrt会自主识别并编译,可以看看package下面有哪些目录:


package下的目录会根据配置的不同而不同,其中基本都是openwrt的一些应用工具包,比如utils就是一引起工具集,ls,ssh等工具的源码都在此目录下

 

2.       target

target目录下主要是和平台有关的代码,最主要的是linux文件夹


我们可以看到每一个平台都对应一个文件夹,我们通过makemenuconfig来选择平台和芯片时就是对应的此文件夹,可以进去ramips看下


可以看到里面有多种芯片型号,此中的image是最终生成固件时会调用到的,在这里可以对我们的固件做部分定制,patches是一些补丁包。base-files中的目录和linux目录相对应,很多地方都有这个文件夹。

 

3. tools

此目录下是一些工具集,通过名字应该都可以看出其具体功能,不多介绍

 

4. docs

文档存放目录,和openwrt有关的一些文档

 

5. include

OpenWrt目录结构_第1张图片

顶层通用makefile,其他makefile中包含的makefile都可以在其中找到

 

6. scripts

OpenWrt目录结构_第2张图片

脚本工具,包括一些用shell,perl,python编写的通用工具

 

7. toolchain

交叉编译工具链相关

 

 

在编译完成后,主目录结构如下:

可以发现多了几个文件夹:dl,tmp,logs,staging_dir,build_dir。其中logs目录为编译过程中输出的一些日志,编译出问题时可以查看此目录,tmp为临时文件夹

 

8. dl

dl为源代码下载目录,在编译过程中下载的源代码包都会保存在此文件夹下

OpenWrt目录结构_第3张图片

 

9. staging_dir

这是一个比较重要的目录,此目录保存工具、内核等所有代码的编译结果,其内容如下:

host文件夹是和平台无关的一些生成物。

target-mipsel_24kec+dsp_uClibc-0.9.33.2是根据我们所选的平台和芯片产生的,其就是对应平台的编译结果。

toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2是根据我们所选的平台生成的交叉编译工具链及库文件。

9.1 我们先看下toolchain-mipsel...目录下的内容


其中的bin就是我们生成的交叉编译工具链

OpenWrt目录结构_第4张图片

我们可以看到其中有gcc,g++,ar等工具链,lib和usr/lib是另外两个比较重要的目录,交叉编译过程中需要的库都保存在这两个目录中,交叉编译时我们需指定这两个目录。include是一些头文件

 

9.2 target-mipsel_24kec+dsp_uClibc-0.9.33.2 这是根据我们平台生成的文件,可以看到有如下内容:


include lib usr都是和平台有关的一些头文件和库,在我们所选平台其为空。

这个目录下最重要的目录是root-ramips,其内容:

这个目录是否很熟悉,和我们在板子上看到的目录一模一样,我们的固件就是通过打包这个文件夹生成的,固件解压出来就是它

 

10. build_dir

这是一个中间文件夹,所有代码都会拷到其中编译,代码在编译之前会拷贝一份到此目录中,为什么要拷贝呢?一个原因就是在-编译过程中OpenWrt可能会对其中一些代码和makefile作改动,这里是为了安全起见,对副本进行编译。

其目录内容和staging_dir一模一样,staging_dir就是build_dir中代码的编译结果。

host    和平台无关的一些工具、库代码

toolchain-mipsel_24kec...  工具链源码

target-mipsel_24kec+dsp_uClibc-0.9.33.2 和平台有关的代码,其中是一些代码包,packge中的代码包很多都会拷贝到此目录编译,我们自己添加的代码包也应拷贝至此目录

OpenWrt目录结构_第5张图片

 

不足之处请指正,谢谢!

你可能感兴趣的:(openwrt)