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、建设:要加强监督,确保保障学生人身安全这是实现国家安全管理完善的主要手段。2、建设:建立电子档案,提高学生信息网络使…

    科研百科 2024年11月22日
    0
  • 软件项目管理的重要性

    软件项目管理的重要性 随着信息技术的快速发展,软件开发已经成为现代社会的重要组成部分。软件项目的成功不仅仅取决于开发人员的技能和经验,还取决于软件项目管理的能力。因此,软件项目管理…

    科研百科 2024年8月21日
    37
  • 将文档从本地迁移到云软件的最佳实践(将云文档转换成本地文档)

    将文档从本地迁移到云软件的最佳实践 直到过去十年,企业技术都在本地服务器上运行。新应用程序伴随着大量的实施、集成、存储和安全开销。IT 部门对组织使用的软件和应用程序拥有庞大的预算…

    科研百科 2022年11月5日
    267
  • 同心同向 强基固本——市检察院2021年度党支部述职报告综述

    1月10日上午,市检察院组织开展2021年度支部党建工作述职汇报会,市检察院机关党委委员、各支部支委,支部工作联络员参加会议。 8名党支部书记围绕2021年度支部党建工作情况,进行…

    科研百科 2023年1月25日
    187
  • pm项目管理系统排行

    PM项目管理系统: 提高项目管理效率的利器 在今天的项目管理中,项目管理人员面临着越来越多的挑战。项目的规模和复杂度不断提高,项目的时间限制越来越紧,项目管理人员需要更高效、更可靠…

    科研百科 2024年12月16日
    0
  • 广特播报发布上海电视台播出——日铁软件(上海)有限公司(上海广播电视台rts)

    当前,数字经济蓬勃发展,制造业的数字化、智能化转型,正推动实体经济实现质量与效率的重大变革,成为了制造业高质量发展的重要途径。智能变革,数字未来,日铁软件(上海)有限公司自成立20…

    科研百科 2024年5月7日
    72
  • 和谷歌地球一样的软件

    和谷歌地球一样的软件 随着科技的不断发展,我们现在已经有了一款和谷歌地球一样的软件,能够为我们提供与谷歌地球类似的三维视觉体验。这款软件的名字叫做“超感3D”,是由北京智源人工智能…

    科研百科 2024年11月30日
    0
  • 免费得项目管理工具

    免费得项目管理工具 随着现代商业的不断增长,项目管理变得越来越重要。一个好的项目管理工具可以帮助团队更好地协调工作,提高生产力,降低风险。现在,有很多免费得项目管理工具可供选择。在…

    科研百科 2024年8月16日
    47
  • 润和软件与兰友科技签订战略合作协议(润和软件参股)

    据润和软件消息,3月19日,润和软件与北京兰友科技有限公司(简称“兰友科技”)正式签订战略合作协议,双方将围绕土壤智能监测领域展开深入合作,以技术创新共同助力国家打赢“净土攻坚战”…

    科研百科 2024年5月2日
    86
  • 最新通告!事关离莞(离莞最新通知)

    6月19日,东莞市南城街道百悦尚城小区2栋由低风险地区调整为中风险地区。 6月19日下午,东莞市新型冠状病毒肺炎疫情防控指挥部办公室发布最新通告(第36号):广大市民群众非必要不离…

    科研百科 2022年6月15日
    127