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年5月30日
    102
  • 科研事业单位成本核算方法

    科研事业单位成本核算方法 科研事业单位是进行研究、开发和应用科学技术的国家机关和企业、组织或个人。其主要职责是支持国家科学和技术发展,促进科技创新和社会进步。在科研事业单位中,成本…

    科研百科 2024年10月9日
    44
  • 湖南项目管理系统平台

    湖南项目管理系统平台: 实现高效项目管理的关键 湖南项目管理系统平台是实现高效项目管理的关键平台。随着现代项目管理的日益复杂,传统的项目管理方式已经无法满足企业和个人的需求。湖南项…

    科研百科 2024年12月24日
    0
  • 施工总承包合同管理

    施工总承包合同管理 施工总承包合同管理是建筑工程项目管理中的重要部分,涉及到项目合同的签订、执行和管理。一个好的施工总承包合同管理可以提高项目的效率和质量,降低风险和成本,确保项目…

    科研百科 2024年8月30日
    33
  • 没想到!铁路信号工日常还有这项工作(作为一名铁路信号工)

    铁路信号被称为 “铁路的中枢神经” 在铁路运输中发挥着重要作用 而负责铁路信号设备维护的 就是铁路信号工 除了保障信号设备状态良好 引导列车安全运行 他们的工作还要和小动物打交道 …

    科研百科 2022年12月9日
    228
  • 科研项目战略管理

    科研项目战略管理 科研项目战略管理是指在科研项目决策、实施和评估过程中,通过制定和实施科学的管理计划,对科研项目的各个方面进行有效的管理和监督,从而实现项目的成功开发和实施。 科研…

    科研百科 2025年3月5日
    1
  • 一文让你看懂什么是人力资源管理软件(人力资源管理用什么软件)

      一文让你看懂什么是人力资源管理软件!   什么是人力资源软件?   定义   人力资源软件是一种专注于管理员工的企业管理软件。人力资源软件的功能是通过跟踪员工信息(例如工资和休…

    2022年6月20日
    294
  • 工科类科研项目很多

    工科类科研项目很多,是现代科技发展的重要组成部分。随着科技的不断进步,工科类科研项目也在不断地更新和发展。这些项目涉及各个领域,包括航空航天、能源、电子、材料等等。 工科类科研项目…

    科研百科 2025年2月1日
    0
  • 《连锁干货》:基于内部控制五要素研究海底捞的管理模式(海底捞内部控制问题研究)

     摘要:本文从内部控制的五个要素出发分析海底捞餐饮股份有限公司的管理模式,以揭示海底捞成功的内在原因以及其目前所面临的各种风险。 关键词:内部控制 管理 风险 一、引言 内部控制是…

    科研百科 2024年7月11日
    122
  • 装饰工程施工进度表的计划编制步骤详解(装饰工程施工进度表的计划编制步骤详解)

    装饰工程施工进度表可以很好地记录施工过程的进度计划,也容易发现施工过程中所存在的问题与不足,能够及时地改进,完善工程质量,工程完成到哪个阶段以及那个项目,都可以在进度表中得知,让整…

    科研百科 2024年6月11日
    70