一、目录树

注意,上图中:

  1. 蓝色是原始文件的目录结构。
  2. 红色是编译之后的目录结构。

二、原始目录

1、config

存放着整个系统的配置文件。

2、include

openwrt 的 Makefile 都存放在这里,文件名为 *.mk 。这里的文件是在 Makefile 里被 include 的,类似于库文件。这些文件定义了编译过程。

3、package

存放了 openwrt 系统中适用的软件包,包含针对各个软件包的 Makefile。openwrt定义了一套 Makefile 模板,各软件参照这个模板定义了自己的信息,如软件包的版本、下载地址、编译方式、安装地址等。在二次开发过程中,这个文件夹我们会经常打交道。

事实上,通过 ./scripts/feed update -a和 ./scripts/feed install -a 的软件包也会存放在这个目录之中。

4、scripts

存放了一些脚本,使用了 bash、python、perl 等多种脚本语言。编译过程中,用于第三方软件包管理的 feeds 文件也是在这个目录当中。在编译过程,使用到的脚本也统一放在这个目录中。

5、staging_dir

用于保存在 build_dir 目录中编译完成的软件,所以这里也和 build_dir 有同样的子目录结构。

比如,在 target-XXX 文件夹中保存了目标平台编译好的头文件、库文件。在我们开发自己的 ipk 文件时,编译过程中的预处理头文件、链接动态库、静态库都是到这个子文件夹中。

6、target

openwrt 的源码可以编译出各个平台适用的二进制文件,各平台在这个目录里定义了 firmware 和 kernel 的编译过程。

7、tmp

从名字来看,是临时文件夹。在编译过程中,有大量中间临时文件需要保存,都是在这里。

8、toolchain

嵌入式的童鞋应该都知道交叉编译链,这个文件中存放的就是编译交叉编译链的软件包,包括:binutils,gcc,libc等等.

9、tools

编译时主机需要使用一些工具软件,tools 里包含了获取和编译这些工具的命令。软件包里面有 Makefile 文件,有的还包含了 patch。每个Makefile当中都有一句$(eval $(call HostBuild)),这表明编译这个工具是为了在主机上使用的。

10. 其他

主要目录就是前面提及的8个,剩下的是单个文件。

(1)Makefile

在顶层目录执行 make 命令的入口文件。

(2)rules.mk

定义了 Makefile 中使用的一些通用变量和函数。

(3)Config.in

include/toplevel.mk中我们可以看到,这是和make menuconfig相关联的文件。

(4)feeds.conf.default

是下载第三方一些软件包时所使用的地址。

(5)LICENSE & README

即软件许可证和软件基本说明.其中README描述了编译软件的基本过程和依赖文件。

三、新增目录

1、bin

保存编译完成后的二进制文件,包括:完整的 bin 文件、所有的 ipk 文件。

2、build_dir

在前面的原始目录中,我们提到了 host 工具、toolchain 工具还有目标文件。openwrt 将在这个目录中展开各个软件包来进行编译,所以这个文件夹中包含如下 3 个子文件夹:

(1)host

在该文件夹中编译主机使用的工具软件。

(2)toolchain-XXX

在该文件夹中编译交叉工具链。

(3)target-XXX

在此编译目标平台的目标文件,包括各个软件包和内核文件。

3、dl

“download”的缩写,从 feeds.conf 指定的仓库下载的 packagefeed 中 Makefile 中指定版本的各种源码包。在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是会自动安装在所编译的固件中,也就是我们 make menuconfig 的时候,为固件配置的一些软件包,如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。编译时,会将软件包解压到 build_dir 目录下。

4、feeds

openwrt 的附加软件包管理器的扩展包索引目录。有点绕,简单来说就是下载并管理软件包的。默认的 feeds下载有packages、management、luci、routing、telephony。如要下载其他的软件包,需打开源码根目录下面的 feeds.conf.default 文件,去掉相应软件包前面的#号,然后更新源:

./scripts/feeds update -a

安装下载好的包:

./scripts/feeds install -a4. dl

在编译过程中使用的很多软件,刚开始下载源码并没有包含,而是在编译过程中从其他服务器下载的,这里是统一的保存目录。

四、拓展

1、软件包编译过程

按照 package 中的脚本下载软件包到 dl 目录下,再将 dl 目录下的软件包解压到 build_dir 目录下,在该目录下进行编译,将生成的目标文件放到 staging_dir 目录下,最终编译完成的镜像文件放到 bin 文件中。

package → dl  →  build_dir → staging_dir  →  bin

(SAW:Game Over!)

Linux / OpenWRT / 目录功能说明相关推荐

  1. linux bin目录下存放的什么,Linux_Linux根目录下主要目录功能说明,/bin:存放最常用命令;   /b - phpStudy...

    Linux根目录下主要目录功能说明 /bin:存放最常用命令: /boot:启动Linux的核心文件: /dev:设备文件: /etc:存放各种配置文件: /home:用户主目录: /lib:系统最基 ...

  2. linux中根目录包含哪些目录,Linux根目录的主要目录功能介绍

    当我们使用Linux时,我们通常只在自己的主目录中操作,而我们创建的文件都在这个目录里面进行的,下面就让爱站技术频道小编为大家介绍一下Linux根目录的主要目录功能介绍,一起来了解一下! Linux根 ...

  3. linux 列出目录结构6,Linux系统目录结构及文件管理命令

    Linux目录结构及文件管理命令 目录结构 1.图示 2.目录功能 文件管理命令 1.创建文件 2.创建目录 3.复制 4.移动 5.删除 6.查看文件内容 7.修改文件内容 8.光标定位命令(命令模 ...

  4. linux 的功能,Linux的主要功能

    Linux的主要功能 Linux系统为用户提供了强大的管理功能,主要包括存储管理,系统用户和用户组管理,进程管理,文件管理等 存储管理 Linux内核采用虚拟页似存储管理,采用三级映射机制实现从线性地 ...

  5. Linux /dev目录详解和Linux系统各个目录的作用

    Linux /dev目录详解和Linux系统各个目录的作用 标签: linuxtcpfunctionclassfirefoxtimer 2012-01-11 23:08 45517人阅读 评论(2) ...

  6. linux apache设置web访问重定向_从零开始学Linux运维|30.Linux的目录结构

    1.tree命令 linux下目录结构跟一个倒过来的树一样的,最顶层就是根目录 / tree这个命令就很形象 它够很方便的查看目录结构 使用"yum install tree -y" ...

  7. EduCoder Linux文件/目录高级管理二

    本实训主要讲解Linux中一个文件/目录是如何在磁盘中存放的,Linux将一个磁盘划分为不同的分区,每个分区可以有不同的格式,Linux用的系统格式有ext2.ext3和ext4. Linux能够识别 ...

  8. EduCoder Linux 文件/目录管理

    Linux中一切皆为文件,不像Windows一样有各个磁盘,Linux中的磁盘也是可以当做文件来进行处理的,通常磁盘是被挂载到/dev目录下. Linux系统新手很难理解它引用文件和目录的方式,对于习 ...

  9. 史上最全的Linux常用——目录和文件管理命令——收藏这一篇就够了!(超全,超详细)

    史上最全的Linux常用--目录和文件管理命令--收藏这一篇就够了!(超全,超详细) Linux目录结构 命令 查看文件内容:-cat 查看文件内容:-more 查看文件内容:-less 查看文件内容 ...

最新文章

  1. sql中的begin....end
  2. mysql索引 钱缀_-MySQL索引背后的数据结构及算法原理--索引选择性与前缀索引
  3. 简述在虚拟机中安装 centos 的过程_从零构建Fabric开发运行环境手册(一):安装OS虚拟机(CentOS)...
  4. 深入理解Javascript闭包(一)
  5. 学习笔记98—从矩阵坐标转换至MNI坐标
  6. 寻找丢失的数字(二)
  7. Android开发中Edittext设置密码显示隐藏的多种方法
  8. python怎么调用列表_Python中列表的使用
  9. Linux部署oracle11g,linux环境下部署Oracle11g
  10. rust 官服指令_【RUST】每个RUST玩家都需要的十个指令
  11. 微软Office Online服务安装部署(二)
  12. 使用字符串修改彩票程序
  13. 推荐写代码的软件(IDE)——VS code的安装与使用,VS code中运行C语言、C++、Java、Python
  14. Plist图集批量拆解工具大全
  15. Excel显示公式栏/编辑栏
  16. CAD2008 启动慢 卡住
  17. 真•扑克牌洗牌算法实现
  18. 超越Nest:集智能温控和家庭控制的Cosy
  19. paddle 图标注_安卓|尺寸标注工具,让标注更加方便
  20. 牛客-小a与星际探索

热门文章

  1. Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块...
  2. [经典算法] 河内塔
  3. pandas(三) -- DataFrame的基本操作
  4. 和功率的计算公式_电机电流的计算公式是什么,具体怎么计算?
  5. Fiddler抓包工具详解(四)(断点设置+弱网测试)
  6. 【收藏】QGIS加载xyz格式地图(以高德影像图和路网为例)
  7. oracle jvm规范官网下载及相关书籍推荐
  8. JVM调优:-XX:+PrintCommandLineFlags 查看程序使用的默认JVM参数
  9. JDBC的SQL注入漏洞分析和解决
  10. MySQL设置数据库及表的字符集