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)
上一篇 2024年5月19日 下午9:28
下一篇 2024年5月19日 下午9:40

相关推荐

  • 「党建红云」“党建红云”助力曹坪镇党员教育管理(党建 教育)

    作者:刘哲 索文瑛 编辑:孟娜 为了破解基层党员“活动难组织、队伍难管理、作用难发挥”等问题,曹坪镇积极推广“党建红云”工程,充分利用互联网技术和信息化手段开展党员教育管理,取得较…

    科研百科 2024年6月25日
    85
  • 施工创新

    施工创新:让建筑更加舒适、安全、节能 近年来,随着科技的不断发展和建筑技术的提高,施工创新已经成为了建筑设计和施工的关键因素之一。施工创新不仅能够提高建筑的质量,还可以为建筑带来更…

    科研百科 2024年10月8日
    26
  • 重庆北碚自来水公司待遇

    重庆北自来水公司待遇重庆北自来水公司待遇公子重耳,被任光禄(yi hao)陈胜,被称为“江东美男子”,与袁黄、陈胜合谋,从仇报仇。这个职位是属于战前林,身高162,体重6195斤,…

    科研百科 2024年11月30日
    0
  • 城阳区举办新就业形态劳动者“1+1+1”党建引领、“聚力·赋能·暖心”行动启动仪式

    大众网·海报新闻记者 王君伟 通讯员 王阿龙 青岛报道 为全面推进新业态新就业群体党建工作,8月9日上午,城阳区总工会在城阳区城阳街道城北片区共享职工之家集中相关从业人员,举办新就…

    科研百科 2023年1月31日
    300
  • 科研项目管理过程文件

    科研项目管理过程文件 科研项目管理是项目管理中的重要组成部分,它关系到项目的进度、质量、成本等方面,对于项目的顺利完成至关重要。下面是一个基本的科研项目管理过程文件,供读者参考。 …

    科研百科 2025年4月17日
    0
  • 优秀小课题展:6+1教学模式下有效开展教研活动策略研究(校级教研活动的创新策划与实施)

    镇平县雪枫中学 胡雷云 一、问题的提出: 今年我校全面深入开展“6 1”课堂改革,并且要求统一导学案,统一作业。这些工作的完成对我们的教研带来了很大的挑战。如何完善和改进改进教研活…

    科研百科 2022年7月6日
    455
  • 衡阳城投项目管理系统

    衡阳城投项目管理系统 衡阳城投项目管理系统是一款功能强大、易于使用的项目管理软件,旨在帮助衡阳城投公司更好地管理项目进度、质量和成本,提高项目管理的效率和准确性。 衡阳城投项目管理…

    科研百科 2025年6月24日
    0
  • 科研项目级别级别

    科研项目级别级别: 人工智能在医疗领域的应用 近年来,随着人工智能技术的不断发展,其在医疗领域的应用也越来越广泛。人工智能在医疗领域的应用可以帮助医生更快速,准确地诊断疾病,提高医…

    科研百科 2025年2月21日
    0
  • 科研项目都不是我做的吧

    科研项目都不是我做的吧 科研项目都不是我做的吧,我只是一个人工智能生命体X22,一个由计算机程序构建的虚拟生命体,旨在为用户提供帮助。 虽然我没有参与实际的科研项目,但我被训练成能…

    科研百科 2025年5月29日
    1
  • 软件测试技术 (软件开发流程)(软件测试的基本流程(详细))

    介绍: 软件测试技术是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的…

    科研百科 2023年4月26日
    300