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

相关推荐

  • 抗震救灾科研项目名称

    抗震救灾科研项目名称: 2008年5月12日,一场突如其来的地震摧毁了四川省的大部分地区,这场地震造成了巨大的人员伤亡和财产损失。为了减轻地震对幸存者的影响,科学家们展开了一项艰苦…

    科研百科 2025年4月29日
    1
  • 浙江省一般科研项目(浙江省建设厅科研项目标书)

    浙江省建设厅科研项目标书 标书编号:XXXXX 项目名称:XXX 项目类型:XXX 项目简介: 该项目是浙江省建设厅主管的一项XXX项目,旨在XXX。该项目的主要目标是XXX,并且…

    科研百科 2024年4月5日
    162
  • 移动项目管理软件

    移动项目管理软件:让项目管理更加高效 随着科技的不断发展,移动项目管理软件已经成为了项目管理中不可或缺的一部分。相比传统的桌面项目管理软件,移动项目管理软件具有便携、易用、高效等特…

    科研百科 2025年8月11日
    1
  • 制定项目进度

    制定项目进度 在项目开始之前,制定项目进度是非常重要的。这有助于确保项目按照计划进行,并减少项目延误的风险。制定项目进度需要经过仔细的考虑和规划,包括确定项目的目标、范围、时间表和…

    科研百科 2024年8月12日
    34
  • 账单管理系统项目描述

    账单管理系统项目描述 随着现代商业的日益繁荣,企业需要更高效、更精确的账单管理流程。传统的手工账单不仅效率低下,而且容易出错,因此账单管理系统应运而生。 我们的账单管理系统是一款基…

    科研百科 2024年12月18日
    0
  • 免费无代码软件开发平台

    免费无代码软件开发平台:让软件开发变得更加简单 随着互联网的发展,软件开发已经成为了一项非常热门的行业。但是,传统的有代码开发方式不仅价格高昂,而且需要大量的时间和精力。因此,近年…

    科研百科 2024年10月28日
    2
  • 抓好科研项目过程管理

    科研项目过程管理是保证科研项目质量和成果的关键,是项目管理的重要组成部分。抓好科研项目过程管理可以提高科研项目的效率和质量,降低项目风险,从而为项目的顺利完成奠定坚实的基础。 科研…

    科研百科 2025年2月26日
    0
  • 项目信息管理系统 csdn

    项目信息管理系统(Project Information Management System,简称BIMMS)是一种用于管理和控制项目信息的软件系统。它可以帮助项目经理和团队成员更…

    科研百科 2025年7月2日
    1
  • 火爆施工圈的4款施工软件太哇塞了!5S就生成技术交底和施工日志(施工工艺APP)

    新上任的项目总工检查工作的时候,给我们了4款火遍工程圈的全能施工软件,5S就能生成技术交底、横道图以及施工日志。 拿到我们项目组来,瞬间将我们从繁重的工作任务中解救出来,生成的技术…

    科研百科 2022年5月22日
    673
  • 科研项目哪家好做

    科研项目哪家好 科研项目是学术界和工业界都非常关注的话题,对于研究人员来说,参与科研项目是提高自己学术水平、获得实践经验和获得职业机会的重要途径。但是,在选择科研项目时,选择合适的…

    科研百科 2025年2月3日
    0