02 make和目录结构
1 make
1.1 整体编译
make V=s
make -j 2
1.2单独编译一个模块
make package/tcpdump/clean 清除编译生成文件
make package/tcpdump/prepare 进行编译准备,包含下载软件代码包,并解压缩和打补丁
make package/tcpdump/configure 根据设置选项镜像配置并生成Makefile
make package/tcpdump/compile 根据生成的Makefile进行编译
make package/tcpdump/install 生成安装包
目标文件在bin
目录下
以上命令都可以添加V=s
选项查看编译过程
2 make menuconfig
解析
Target System
机型的系列Subarget
机型系列的二级子菜单Target Profile
机型的配置Target Image
rootfs嵌入到kennelGlobal build setting
Administration
管理工具Development
开发工具Firmware
无线网卡的操作系统Kernel modules
内核模块Libraries
常用库
3 目录结构
bin
或者sbin
放可执行文件etc
配置文件mnt
挂在点proc
和sys
内核创建,两者并存。proc
不容易管理usr
用户目录www
Luci
等相关的资源文件dev
设备lib
库overlay
overlay
文件系统则表示一个文件系统覆盖在另一个文件系统上面。平时操作时,不会直接去修改底层文件系统,而是在overlay
上进行操作rom
静态文件,初始文件tmp
临时目录var
存放临时文件
4 顶层目录概述
编译生成的结果会存储在3个目录下:
build_dir/host
:是一个临时目录,用来储存不依赖目标平台的工具
build_dir/toolchain-<arch>*
:用来储存依赖于平台的编译工具链
staing_dir/toolchain-<arch>*
:编译工具链最终安装的位置
4.1 openwrt
编译生成目录
5 编译脚本
5.1 scripts
目录scripts
为编译工具脚本文件,在编译时首先将patch
目录下的所有补丁打上(如果失败则直接退出编译)。
5.2 feeds
编译扩展机制
feed
:非官方的包
package
:官方的包
feed
最后会合入到package
中
feeds
由两部分组成:
扩展包位置配置文件feed.conf.default
脚本工具feeds
./scripts/feeds update -a
./scripts/feeds install -a
上述操作就是利用feeds提供的接口将OpenWrt
所需的全部扩展软件包进行下载并安装
update: 下载feeds.conf或feeds.conf.default文件中的软件包,并创建索引。
-a 表示更新所有的软件包。只要更新后才能进行后面的操作
list: 从创建的索引文件 feed.index 中读取列表并显示(只有更新之后才可以使用)
install: 安装软件包及它所依赖的软件包。从feeds目录安装到package目录。及在package/feeds目录下创建软链接。只有安装之后才能对相关的软件包进行编译。
search: 按照传入的字符串,查找软件包
uninstall: 卸载软件包,仅删除本软件包的软链接
clean: 删除update命令下载和生成的索引文件。不会删除install创建的链接
feeds
处理过程:读取并解析feeds.conf
配置文件。然后执行相关的命令。
编译扩展安装过程就是将feeds
目录下的软件包链接到package/feeds
对应目录下。可以使用feeds.conf
或者feeds.conf.default
。优先选择feeds.conf
。此文件包含3部分,feed
方法,feed
名字,feed
源