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)
上一篇 2023年4月20日 上午11:03
下一篇 2023年4月20日 上午11:19

相关推荐

  • 高分子化合物的制造

    获取高分子化合物的方法大致可分为三种:聚合反应、高分子反应和复合化。 (1) 聚合反应 聚合反应是制造高分子化合物的主要手段。迄今为止,聚合技术已进人成熟期,催化剂的改进 (如茂金…

    科研百科 2024年6月21日
    54
  • 一汽大众申请试验场安全运行管理方法和系统专利,可以实现更全面的试验场安全运行管理

    金融界2023年12月12日消息,据国家知识产权局公告,一汽-大众汽车有限公司申请一项名为“一种试验场安全运行管理方法和系统“,公开号CN117217335A,申请日期为2022年…

    科研百科 2024年1月28日
    84
  • 大庆石化公司总经理

    大庆石化公司总经理:林虎 尊敬的各位嘉宾,大家好! 今天,我很荣幸能够在这里和大家分享一些关于大庆石化公司总经理林虎的信息。 林虎总经理是大庆石化公司的决策者和领导者,他在过去的几…

    科研百科 2024年10月19日
    12
  • 数学科研项目有哪些

    数学科研项目有哪些 数学是一门广泛应用于各个领域的学科,其研究的范围非常广泛。随着科技的不断进步,数学科研项目也在不断的发展。本文将介绍一些目前比较热门的数学科研项目。 一、数学模…

    科研百科 2024年11月13日
    2
  • 项目前期工作经费管理办法西藏(项目前期工作经费管理办法)

    项目前期工作经费管理办法项目前期工作经费管理办法首先是加州大学库学院党委宣传部的“本部设在简讯通官网中”这一线索。据报道,当地党委书记米歇尔·詹尼克为5个56岁的年轻人进行了对北京…

    科研百科 2024年7月31日
    62
  • 工程项目管理要素

    工程项目管理要素 工程项目管理是项目管理的重要组成部分,涵盖了从项目的开始到结束的所有阶段。在工程项目管理中,以下要素至关重要: 1. 项目计划:项目计划是工程项目管理的核心。它包…

    科研百科 2024年8月19日
    39
  • 党员培训标题怎么写新颖

    党员培训标题怎么写新颖 党员培训是党员学习的重要环节,也是加强党员队伍建设的重要手段。如何写出新颖的党员培训标题,使得党员在学习过程中能够得到更多的启发和帮助呢? 在写党员培训标题…

    科研百科 2024年11月29日
    9
  • 太原市教育科研课题管理系统

    太原市教育科研课题管理系统 随着太原市教育事业的发展,教育科研课题管理系统已经成为了一个重要的工具。这个系统可以帮助学校和教育工作者更好地管理和维护他们的课题项目,同时也可以帮助家…

    科研百科 2024年7月12日
    88
  • 《中国共产党组织工作条例》(全文)

    中国共产党组织工作条例 (2021年4月30日中共中央政治局会议审议批准 2021年5月22日中共中央发布) 第一章 总则 第一条 为了深入贯彻习近平新时代中国特色社会主义思想,贯…

    科研百科 2023年2月15日
    147
  • 系统集成项目管理工程师马军

    系统集成项目管理工程师马军:以项目管理的专业人士为例 系统集成项目管理工程师马军是一位专业人士,他负责管理和维护一个大型系统集成项目。作为项目经理,他需要具备出色的沟通、协调和领导…

    科研百科 2024年7月25日
    60