OpenWrt目录结构
2016-05-20 15:17
232 查看
在未编译前,OpenWrt目录如下:
![](http://img.blog.csdn.net/20141208101653247?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
1. package
此目录主要存放OpenWrt的软件包,我们自己添加的应用层代码都应存放于此文件夹,代码包存放于此文件夹并编写相应的Makefile后,在编译过程中OpenWrt会自主识别并编译,可以看看package下面有哪些目录:
![](http://img.blog.csdn.net/20141208101800530?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
package下的目录会根据配置的不同而不同,其中基本都是openwrt的一些应用工具包,比如utils就是一引起工具集,ls,ssh等工具的源码都在此目录下
2. target
![](http://img.blog.csdn.net/20141208101846862?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
target目录下主要是和平台有关的代码,最主要的是linux文件夹
![](http://img.blog.csdn.net/20141208102008528?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我们可以看到每一个平台都对应一个文件夹,我们通过makemenuconfig来选择平台和芯片时就是对应的此文件夹,可以进去ramips看下
![](http://img.blog.csdn.net/20141208102049078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
可以看到里面有多种芯片型号,此中的image是最终生成固件时会调用到的,在这里可以对我们的固件做部分定制,patches是一些补丁包。base-files中的目录和linux目录相对应,很多地方都有这个文件夹。
3. tools
此目录下是一些工具集,通过名字应该都可以看出其具体功能,不多介绍
![](http://img.blog.csdn.net/20141208102121281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4. docs
文档存放目录,和openwrt有关的一些文档
5. include
![](http://img.blog.csdn.net/20141208102201597?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
顶层通用makefile,其他makefile中包含的makefile都可以在其中找到
6. scripts
![](http://img.blog.csdn.net/20141208102230296?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
脚本工具,包括一些用shell,perl,python编写的通用工具
7. toolchain
交叉编译工具链相关
![](http://img.blog.csdn.net/20141208102307881?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在编译完成后,主目录结构如下:
![](http://img.blog.csdn.net/20141208102335015?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
可以发现多了几个文件夹:dl,tmp,logs,staging_dir,build_dir。其中logs目录为编译过程中输出的一些日志,编译出问题时可以查看此目录,tmp为临时文件夹
8. dl
dl为源代码下载目录,在编译过程中下载的源代码包都会保存在此文件夹下
![](http://img.blog.csdn.net/20141208102429953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
9. staging_dir
这是一个比较重要的目录,此目录保存工具、内核等所有代码的编译结果,其内容如下:
![](http://img.blog.csdn.net/20141208102506598?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
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...目录下的内容
![](http://img.blog.csdn.net/20141208103127472?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
其中的bin就是我们生成的交叉编译工具链
![](http://img.blog.csdn.net/20141208103158126?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我们可以看到其中有gcc,g++,ar等工具链,lib和usr/lib是另外两个比较重要的目录,交叉编译过程中需要的库都保存在这两个目录中,交叉编译时我们需指定这两个目录。include是一些头文件
9.2 target-mipsel_24kec+dsp_uClibc-0.9.33.2 这是根据我们平台生成的文件,可以看到有如下内容:
![](http://img.blog.csdn.net/20141208103227828?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
include lib usr都是和平台有关的一些头文件和库,在我们所选平台其为空。
这个目录下最重要的目录是root-ramips,其内容:
![](http://img.blog.csdn.net/20141208103252390?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这个目录是否很熟悉,和我们在板子上看到的目录一模一样,我们的固件就是通过打包这个文件夹生成的,固件解压出来就是它
10. build_dir
这是一个中间文件夹,所有代码都会拷到其中编译,代码在编译之前会拷贝一份到此目录中,为什么要拷贝呢?一个原因就是在-编译过程中OpenWrt可能会对其中一些代码和makefile作改动,这里是为了安全起见,对副本进行编译。
![](http://img.blog.csdn.net/20141208103720704?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
其目录内容和staging_dir一模一样,staging_dir就是build_dir中代码的编译结果。
host 和平台无关的一些工具、库代码
toolchain-mipsel_24kec... 工具链源码
target-mipsel_24kec+dsp_uClibc-0.9.33.2 和平台有关的代码,其中是一些代码包,packge中的代码包很多都会拷贝到此目录编译,我们自己添加的代码包也应拷贝至此目录
![](http://img.blog.csdn.net/20141208103939078?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemdhbmd6/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
不足之处请指正,谢谢!
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
顶层通用makefile,其他makefile中包含的makefile都可以在其中找到
6. scripts
脚本工具,包括一些用shell,perl,python编写的通用工具
7. toolchain
交叉编译工具链相关
在编译完成后,主目录结构如下:
可以发现多了几个文件夹:dl,tmp,logs,staging_dir,build_dir。其中logs目录为编译过程中输出的一些日志,编译出问题时可以查看此目录,tmp为临时文件夹
8. dl
dl为源代码下载目录,在编译过程中下载的源代码包都会保存在此文件夹下
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就是我们生成的交叉编译工具链
我们可以看到其中有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中的代码包很多都会拷贝到此目录编译,我们自己添加的代码包也应拷贝至此目录
不足之处请指正,谢谢!
相关文章推荐
- linux cron计划任务
- apache lucene core
- Hadoop各商业发行版之比较
- Centos7下LNMP安装log4php,phpunit
- 找到bashrc
- Apache和PHP的优化
- Linux系统下安装Apache2.4+Mysql5.7+PHP7+Perl(小白装lampp一)
- nginx+tocmat 负载均衡时,一台tomcat宕机时,如何快速切换到其他tomcat
- linux定时任务crontab设置
- org.apache.log4j.Logger详解
- 操作系统知识(6)--Shell初探
- linux
- 使用.Net Core发布可从外部访问的网站
- Zabbix 3.0.2监控预警服务
- Linux日常维护命令
- linux下对文件的读写操作
- 每天一个Linux命令(22)find命令_命令详解
- boost asio 中io_service stop函数注意
- Centos7 安装gitlab 8.7.5
- linux、windows中ping大数据包的命令格式