openwrt单个ipk编译过程

本文详细介绍了openwrt中单个ipk的编译过程,从ipk Makefile分析、依赖关系解析到执行步骤,以package/network/services/dropbear包为例,探讨了GNU make语法在Makefile中的应用,以及BuildPackage函数如何构建编译目标的依赖关系。
摘要由CSDN通过智能技术生成

前言

前一篇博客中,我们已经知道整个openwrt的编译顺序,本文我们来探讨与开发者息息相关的单个ipk的编译过程.在开发者进行二次开发的时候,我们既可以单个编译ipk也可以完整编译整个镜像文件.在完整编译的时候,我们选中的单个ipk同样会被编入镜像文件中,所以完整编译同样会进行单个ipk包的编译.

我们前面在stampfile函数部分提高过,当编译目标为package/stamp-compile的时候,实际执行的目标为package/compile;同时根据subdir函数的定义,package/compile将会依赖于package文件夹下被make menuconfig选中的子文件夹的compile.简而言之,当我们执行make package/compile相当于对所有选中的文件夹执行make package/XXX/compile.


ipk Makefile分析

我们以一个具体的包的编译过程来看看,本文我们以package/network/services/dropbear这个包为例.当我们在命令行中输入make package/network/services/dropbear/compile的时候,make将会读入dropbear下的Makefile文件,同时目标指定为compile.[1]

因为空间问题,我在这里不展开具体的Makefile文件.相信能看这篇博客的同学应该都有源码,自己打开便是. 
下面我们根据GNU make语法来分析这个Makefile文件.它包含了两个.mk文件:一个是rules.mk,另一个是package.mk.

rules.mk
这个文件我们前文已经提到过了,主要是大量变量的定义.包括各种路径的定义,编译器的定义等等.其中要说明的是 .config文件也是这里被包含进来的.
package.mk
这个文件首先定义和补充了一些变量.其次是 openwrt为我们封装了 BuildPackage函数,对于普通开发者而言,只需要参照模板定义相应的变量,最后调用这个函数即可.

其余的我们可以认为是变量的赋值语句,很明显使用它们的地方并不在这里.关于模板和变量值的说明及作用.,你可以参照官方说明,也可以在网上找到一大堆资料.

最后,最重要的语句是这一句:

 
 
 
  1. $(eval $(call BuildPackage,dropbear
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
离线安装OpenWRTIPKOpenWrt Package Kit)包通常是在没有网络连接的情况下更新或添加软件包的步骤,因为IPK文件包含了预编译的软件包。下面是基本的离线安装过程: 1. **下载所需IPK文件**: - 首先,你需要知道你要安装的具体IPK包的名字以及其版本。访问OpenWRT的软件仓库(如https://downloads.openwrt.org/固件/packages/)找到对应包的URL和版本。 - 下载到你的本地存储设备,比如电脑或者USB驱动器。 2. **将IPK文件复制到OpenWRT设备**: - 如果你的OpenWRT设备可以通过USB或SD卡接入电脑,直接将IPK文件复制到相应位置。 - 或者,如果设备支持TFTP传输,你可以设置TFTP服务器并将IPK文件放在服务器上,然后设备通过TFTP进行下载。 3. **配置OpenWRT**: - 登录到OpenWRT的终端或Web界面,进入`opkg`命令行工具。 - 使用`opkg update`(注意这一步通常需要网络,但如果之前已经下载了索引文件,则可以忽略)确保系统知道在哪里查找软件包。 - 如果`opkg update`提示没有可用的索引,使用`opkg setsrc`指定你的本地目录作为新的源,例如`opkg setsrc local /path/to/downloaded/ipk/`。 4. **安装IPK包**: - 使用`opkg install [package-name]`命令安装你的IPK文件。记得替换`[package-name]`为你要安装的具体包名。 5. **确认安装**: - 安装完成后,检查是否成功通过`opkg list-installed`命令查看新安装的包是否在列表中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值