openwrt编译流程分析

OpenWrt编译详解:从host工具到固件合成
本文详细介绍了OpenWrt系统的编译过程,包括编译host工具、交叉工具链、内核模块、ipk、内核以及文件系统整合。在编译过程中,重点解析了顶层Makefile的结构,如world、debug.mk、depends.mk、toplevel.mk等,并阐述了各阶段的目标及依赖关系。此外,还提到了关键文件rules.mk和subdir.mk的功能。整个编译流程涉及多个步骤,最终生成目标二进制镜像文件。

最近开始整5G CPE项目,系统基于OpenWrt系统移植裁剪,打算详细研究了一下整个工程的构建过程,记录一下:

Openwrt编译过程概述

编译的总体过程如下:

1.编译host工具

2.编译交叉工具链

3.编译内核模块

4.编译ipk

5.安装ipk到文件系统

6.编译内核

7.将内核和文件系统组合成最终的固件

1. 编译host工具

虽然我们在开始编译前已经安装了一些必要的工具,但编译过程中还需要其他一些主机工具。这部分工具将首先编译。

2. 编译交叉工具链

openwrt自带交叉编译链,当然在编译目标平台软件前,需要先编译。

3. 编译内核模块

因为部分内核模块将会生成独立的ipk,所以内核模块需要首先编译。

4. 编译ipk

这里将编译package目录下的各个软件包,这也是和我们最为息息相关的。

5. 安装ipk

将生成的ipk安装到文件系统之中(比如build_dir/target-XXX/root-ramips目录)。

6. 编译内核

在完成ipk编译之后,将会编译内核,压缩内核.同时使用mkimage工具,在内核前面生成一个用于uboot识别的头部。

7. 合成

在最后一步,将文件系统和内核连接在一起,即生成了目标二进制镜像文件。

 

顶层Makefile结构分析

我们以19.07的代码为例,整个编译的入口是在源码根目录下的Makefile。编译的各种命令都应该在源码根目录下键入。
整个主Makefile的结构如下:

world:

DISTRO_PKG_CONFIG:=$(shell command -pv pkg-config | grep -E '\/usr' | head -n 1)
export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)

ifneq ($(OPENWRT_BUILD),1)
  _SINGLE=export MAKEFLAGS=$(space);

  override OPENWRT_BUILD=1
  export OPENWRT_BUILD
  GREP_OPTIONS=
  e
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值