OpenWRT开发之创建软件包(OpenWrt软件包)

OpenWRT二次开发时总免不了开发自己的软件包。本文介绍如何在OpenWRT中创建一个新的软件包。

首先创建软件包所在的目录,在openwrt根目录中执行:

mkdir -p package/mypackages/helloworld

这里的mypackages目录和helloworld目录都是新建的,helloworld就是我们本次新建的软件包的包名。我们后续可以将自己创建的包都放在mypackages目录下。

helloworld包的目录结构如下:

helloworld├── Makefile #openwrt’s package manifest file└── src ├── helloworld.c #helloworld source code └── Makefile #helloworld’s makefile

package manifest file

即软件包helloworld目录下的Makefile文件。例子以及注释如下:

# 导入通用编译规则include $(TOPDIR)/rules.mk# name和version用来定义编译目录名$(PKG_BUILD_DIR)]PKG_NAME:=helloworldPKG_VERSION:=1.0PKG_RELEASE:=1#PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) # 也可以直接定义编译目录名,代替默认的目录名# 导入包定义include $(INCLUDE_DIR)/package.mk# 包定义:定义我们的包在menuconfig中的位置# Makefile中的define语法可以理解为函数,用于定义命令集合define Package/helloworld SECTION:=examples CATEGORY:=Examples TITLE:=helloworld, learn from example.endef# 包描述:关于我们包的更详细的描述define Package/helloworld/description A simple helloworld example, my first openwrt package example.endef# 编译准备. 必须使用tab缩进,表示是可执行的命令define Build/Prepare echo "Here is Build/Prepare" mkdir -p $(PKG_BUILD_DIR) cp ./src/* $(PKG_BUILD_DIR)/endef# 安装define Package/helloworld/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/usr/binendef# 这一行总是在最后$(eval $(call BuildPackage,helloworld))

上面的例子中没有定义define Build/Compile,表示使用默认的Compile命令。默认的Compile行为就是在$(PKG_BUILD_DIR)目录下执行make命令。

helloworld.c及其Makefile

helloworld.c内容如下:

#include<stdio.h>int main(void){ printf("Hello world!n"); printf("This is my first package!n"); return 0;}

与helloworld.c同目录的Makefile内容如下:

TARGET = helloworldOBJS = helloworld.o$(TARGET):$(OBJS) $(CC) $(LDFLAGS) -o $@ $^%.o: %.c $(CC) $(CFLAGS) -c $< -o $@.PHONY: cleanclean: rm -f $(TARGET) $(OBJS)

说明:这里的$(CC)、$(CFLAGS)、$(LDFLAGS)都是由OpenWRT的build系统赋值的,CC就是目标平台对应的交叉编译工具链里的gcc。

测试

在OpenWRT根目录下运行make menuconfig,可以看到多出来一个”Examples —>”菜单,按回车进去后可以看到我们新建的”helloworld” 包。 (从这里也可以看出,在执行make menuconfig时,OpenWRT会自动扫描package目录以及其子目录下所有的包。)

选中这个”helloworld”包。然后再OpenWRT根目录下执行:

make package/helloworld/compile V=s

此命令即为OpenWRT单package编译命令。

通过log,可以看到我们的包编译成功。编译目录为 build_dir/target-XXXX/helloworld-1.0

如果要再次编译,可以执行:

make package/helloworld/{clean,compile} V=s

本文源码见: https://github.com/jian-soft/openwrt-package-example


参考文章:

  • https://openwrt.org/docs/guide-developer/packages
  • https://openwrt.org/zh-cn/doc/devel/packages
  • https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem
  • https://openwrt.org/docs/guide-developer/helloworld/start
  • https://github.com/mwarning/openwrt-examples

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月23日 上午10:00
下一篇 2022年5月23日 上午10:10

相关推荐

  • 低代码平台的发展历史是什么样的

    低代码平台的发展历史是什么样的? 低代码平台是一种软件开发工具,旨在帮助开发人员快速构建应用程序,减少繁琐的编码工作。它提供了一种可视化的开发环境,使开发人员能够通过拖放组件和配置…

    科研百科 2024年2月23日
    168
  • 项目管理是啥

    项目管理是什么? 项目管理是指通过规划、组织、执行和控制一系列活动,来实现特定目标的过程。它是一个重要的商业和工程领域,广泛应用于建筑、信息技术、医疗保健、金融、制造业等行业。 项…

    科研百科 2024年7月16日
    41
  • java课程项目(java大学期间做科研项目注意啥)

    在Java大学期间,参与科研项目是一项重要的任务,也是锻炼自己编程能力和提高科研水平的重要途径。然而,在参与科研项目时,需要注意一些事项,以确保自己的项目能够顺利完成。 首先,需要…

    科研百科 2024年8月2日
    63
  • “上岗先拿证”,北斗产业的彷徨与期盼

    图片来源@视觉中国 文 | 泰伯网 认证费多少钱,一次性交齐还是每年交一次,认证什么,怎么认证……市场监管总局近日印发《关于开展北斗基础产品认证工作的实施意…

    科研百科 2022年7月21日
    246
  • Oracle项目管理系统之立项信息(oracle 项目管理)

    卷首语 风险定性评估是评估已识别风险的影响和可能性的过程。这一过程用来确定风险对项目目标可能的影响,对风险进行排序。它在明确特定风险和指导风险应对方面十分重要。 方案概述 项目立项…

    科研百科 2022年7月5日
    306
  • 学校自然科学基金项目有钱拿吗(高校自然科学基金科研项目)

    高校自然科学基金科研项目 近年来,随着科技的不断发展,高校自然科学基金科研项目越来越受到关注。作为一项资助高校师生开展科学研究的重要资金,自然科学基金科研项目为高校的科研发展提供了…

    科研百科 2024年4月4日
    138
  • 23人!宿迁市2019年市级党群系统事业单位公开招聘

    根据事业单位公开招聘工作相关规定,为及时补充事业单位工作人员,更好地选拔优秀适岗人才,优化人员结构,经研究,决定面向社会公开招聘市级党群系统事业单位工作人员。现将有关事项公布如下:…

    科研百科 2023年6月5日
    309
  • 全国第一!云南建设项目使用林地定额34048公顷

    来源:昆明日报-掌上春城 掌上春城讯 4月13日,云南省林草局优化营商环境系列政策新闻发布会在昆明召开。云南省林业和草原局党组成员、副局长、新闻发言人赵永平等介绍“强化要素保障、优…

    科研百科 2024年4月20日
    130
  • ChatGPT:不只是聊天,还能赚钱?!看这8种方式如何实现

    在当前的社交网络和智能手机普及的时代,人们已经开始尝试利用人工智能技术来赚钱。其中,chatgpt已经成为了一个被广泛使用的人工智能工具。利用chatgpt,可以从事许多不同的职业…

    科研百科 2023年3月10日
    258
  • 国培 科研项目

    国培科研项目 随着国家教育事业的发展,各地教育培训机构都在积极开展各项教育科研项目,旨在提高教师的教学水平和教学质量,推动教育事业的不断发展。其中,“国培计划”是教育部针对全国各地…

    科研百科 2025年2月8日
    0