硬件介绍

  1. 硬件平台为QCA9531,64M/128M DDR, 16M Flash
  2. 目标是做一款带4G功能的工业网关产品

第一次编译

看了大神写的执行make menuconfig/kernel_menuconfig 的流程分析:
openwrt make menuconfig流程分析
openwrt make kernel_menuconfig流程分析
大致流程如下:
a.顶层Makefile调用toplevel.mk,执行其中的menuconfig 目标
a.1 编译script/config/mconf
a.2 调用scan.mk生成tmp/.packageinfo文件
a.3 使用metadata.pl脚本根据tmp/.packageinfo生成tmp/.config-package文件
a.4 调用script/config/mconf Config.in 生成图形配置界面
b.scan.mk的作用就是扫描package和target目录下的Makefile,根据Makefile中的内容生成tmp/.packageinfo,供metadata.pl使用
c.Config.in 只是配置文件,作为mconf的参数

以后信息量很大,苦于对脚本语言尚未开窍,不得其要领;

  • 在根目录执行make menuconfig
    Target System --> Atheros AR7xxx/AR9xxx
    Subtarget --> Generic
    Target Profile --> Qualcomm Atheros AP147-010 reference board
    Target Images --> [+] ext4, [+] squashfs, [+] GZip images
    others default…
  • make -j1 V=s
  • 在/bin/targets/ar71xx/generic生成内核、文件系统、整个bin文件
  • 区别与QSDK编译生成的kernel和rootfs可以单独通过tftp更新,而openwrt编译也生成了内核和文件系统,以及sysupgrade.bin,但不知为何原因无法单独更新,只能完整的更新sysupgrade.bin。
  • 默认选中的packages位于/bin/targets/ar71xx/generic/packages

固件生成过程

根据编译生成固件时控制台的打印信息整理分析得到:

  • mkimge生成kernel,openwrt-ar71xx-generic-uImage-lzma.bin
  • 通过mksquashfs4、make_ext4fs制作文件系统
  • 通过padjffs2后,最终生成文件系统openwrt-ar71xx-generic-root.squashfs
  • Patch cmdline参数,lzma压缩,mkimage,用于下一步
  • 制作sysupgrade.bin,openwrt-ar71xx-generic-ap147-010-squashfs-sysupgrade.bin
  • 生成manifest文件,即packages的清单,并生成ipk包
  • 结束编译

make clean、dirclean、distclean

Warnning:一定做好备份!!!!
0、原始目录大小:

1、make clean: 清除bin目录

clean: FORCErm -rf $(BUILD_DIR) $(STAGING_DIR) $(BIN_DIR) $(OUTPUT_DIR)/packages/$(ARCH_PACKAGES) $(BUILD_LOG_DIR) $(TOPDIR)/staging_dir/packages


2、make dirclean: make clean+清除交叉编译工具及工具链目录

dirclean:clean                                                                                                                                                                         rm -rf $(STAGING_DIR_HOST) $(STAGING_DIR_HOSTPKG) $(TOOLCHAIN_DIR) $(BUILD_DIR_BASE)/host $(BUILD_DIR_BASE)/hostpkg $(BUILD_DIR_TOOLCHAIN)rm -rf $(TMP_DIR)


3、make distclean: 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等
一夜回到解放前!

OpenWrt 学习笔记【2】编译固件生成过程make clean相关推荐

  1. OpenWrt学习笔记之刷机、救砖

    OpenWrt学习笔记之刷机及救砖 完成了固件的编译之后就可以进行刷机了,当然也可以去官网直接下载固件.连接如下:http://wiki.openwrt.org/toh/tp-link/tl-wr70 ...

  2. OpenWRT 学习笔记 -- 用户自定义添加app的开机自启动

    参考自:OpenWRT编译 – 用户自定义添加app的开机自启动 OpenWRT 学习笔记-19 OpenWRT开机自启动服务 文章目录 一.概述 二.自启动实现方式一 三.自启动实现方式二 四.自启 ...

  3. Makefile学习笔记07|编译静态库并通过ifeq语句

    Makefile学习笔记07|编译静态库并通过ifeq语句   希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢.   这里是目录   本篇与上一篇有较多联系,有兴趣的可以先看上一 ...

  4. java中预编译是啥意思_JAVA学习笔记预编译

    JAVA学习笔记预编译 (2011-07-30 02:36:17) 标签: 杂谈 第顺次运行jsp时jsp将被改换成servlet(第顺次工夫较长,而尔后就会快许多) 搭配好的利用过程能够穿越设置js ...

  5. Makefile学习笔记06|编译动态链接库

    Makefile学习笔记06|编译动态链接库   希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢.   这里是目录 静态链接与动态链接   链接分为两种:静态链接.动态链接. 静 ...

  6. Zynq-7000系列之linux开发学习笔记:编译Linux内核和制作设备树(六)

    开发板:Zynq7030数据采集板 PC平台:Ubuntu-18.04 + MobaXterm 开发环境:Xilinx Vivado + SDK -18.3 交叉编译工具:arm-linux-gnue ...

  7. OpenWRT学习笔记(1)环境部署代码下载及编译

    一 . 安装虚拟机,我选择安装ubuntu14.04版本. 二. 安装编译工具 更新ubuntu软件仓库中软件包的索引文件. sudo apt-get update 安装如下工具: sudo apt- ...

  8. OpenWRT 学习笔记-17 OpenWRT固件的结构分析,逆向解包

    固件是由三部分组成:固件头.kernel.rootfs.我们可以通过mkimage工具分析固件头,用binwalk来解包固件分析kernel和rootfs,通常rootfs一般是squashfs格式的 ...

  9. Linux学习笔记---初次编译Uboot系统

    在初次编译Uboot系统时,是按照正点原子开发指南操作的,但是开发指南上讲得不是很详细,又看了一遍视频教程才搞清楚完整步骤,为了方便学习,就将详细步骤记录下来,以便以后参考. Uboot初次编译 1. ...

  10. 安卓学习笔记--全志的固件工具

    全志的固件工具可以做的事情实在是超强, 最常见的客户要求: 1. 修改开机画面 这个最简单,直接选替换开机画面,然后选择新的bmp文件就可以了,当然分辩率要跟原来的一致 开机画面叫initlogo.r ...

最新文章

  1. jquery radio 取值
  2. LeetCode 923. 3Sum With Multiplicity
  3. 工业互联网 — 5G 边缘计算与 IIoT
  4. Error: Could not access the Package Manager. Is the system running?
  5. Quick BI的可视分析之路
  6. 见过一个一个拉新地推没见过这么多一起推
  7. Sqlserver2005附加数据库时出错提示操作系统错误5(拒绝访问)错误5120的解决办法...
  8. 《how to write and publis a scientific paper》 Chapter 3
  9. 计算机用的代码怎么写,什么是代码,代码怎么写,怎么样写入电脑
  10. CS224N WINTER 2022(三)RNN、语言模型、梯度消失与梯度爆炸(附Assignment3答案)
  11. Hadoop3.3.1详细教程(四)Linux集群搭建+免密登录
  12. P1137 旅行计划
  13. 烂到不想考研!大学糟糕宿舍大盘点!
  14. 权限提升+权限维持+痕迹清理
  15. FileOutputStream方法创建文件并写入数值
  16. 使用VS编译mqtt库(一次成功)
  17. windows 2003 下SERVU:无法开始服务器.服务器执行缺少
  18. win7 更新service pack 1 失败解决办法
  19. sqli-labs通关笔记(less23-less28a)
  20. 内核空间和应用空间的数据拷贝(copy_to_user copy_from_user)

热门文章

  1. What is the exact meaning of Runtime.getRuntime().totalMemory()
  2. [iOS]下载网络图片到相册
  3. 技术宅预约Kou罩那些事儿
  4. 《理财达人带你玩转基金,实现资产翻倍》笔记(一)
  5. 句子/文档相似度计算
  6. 【笔记04】下载、配置 MAVEN(配置 MAVEN 本地仓库)(MAVEN 的 setting.xml)
  7. 一个Java的权限框架-Shiro
  8. 微信小程序wx.scanCode扫描条形码,偶尔出现条形码不正确导致查询失败
  9. 隐形的双十一助攻者,网商银行持续通关小微金融难题
  10. 机器人ccid认证_机器人3·15 揭示产品质量六大痛点