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)
上一篇 2022年5月23日 上午10:00
下一篇 2022年5月23日 上午10:10

相关推荐

  • 科研项目哪个好找工作呢

    科研项目哪个好找工作呢?这是一个非常主观的问题,因为不同的科研项目在不同的领域和行业中都有广泛的应用,并且对应的就业市场也有所不同。然而,我们可以从以下几个方面来考虑: 1. 市场…

    科研百科 2025年5月10日
    2
  • 手机电脑协同办公软件有哪些(手机电脑协同办公软件)

    手机电脑协同办公软件: 打造高效办公利器 随着科技的不断发展,手机电脑协同办公软件已经成为现代办公中不可或缺的一部分。这种软件能够帮助我们更好地利用手机和电脑的优势,提高工作效率和…

    科研百科 2024年6月6日
    98
  • 青岛项目建设管理系统

    青岛项目建设管理系统 青岛项目建设管理系统是一款功能强大、易于使用的项目管理系统,为项目经理和项目团队提供了全面的解决方案。青岛项目建设管理系统可以帮助项目经理有效地管理项目进度、…

    科研百科 2024年12月27日
    0
  • 瑞典科研项目有哪些

    瑞典科研项目有哪些 瑞典是一个拥有丰富科学研究资源的国家。该国的研究机构和企业合作,致力于推动前沿科学研究。以下是一些在瑞典进行的主要科研项目。 1. 北欧量子计算中心(NERC)…

    科研百科 2025年2月28日
    2
  • 国产CAD龙头,中望软件:CAX战略成效初显,竞争力快速提升(国产cad厂商中望软件登陆科创板,上市首日大涨171%)

    (报告出品方/分析师:华福证券 钱劲宇) 一、中望软件:国产CAD龙头,CAX战略践行者 1.1 具备核心能力的国产CAD企业 深耕CAD二十余年,核心产品国内领先。自成立以来,公…

    科研百科 2023年4月22日
    656
  • 科研项目申报找客户经理

    科研项目申报找客户经理 随着科技的不断发展,科研项目已经成为企业 or 学校发展的重要支撑。科研项目申报是一项重要的日常工作,需要客户经理来进行指导和帮助。 客户经理是负责企业或学…

    科研百科 2025年5月18日
    0
  • 软件开发 项目管理工具

    软件开发项目管理工具 随着软件开发的日益普及,软件开发项目管理已经成为了一项必不可少的任务。为了更好地管理软件开发项目,人们开始使用各种项目管理工具。本文将介绍一些常用的软件开发项…

    科研百科 2024年7月23日
    55
  • 一核三制五团组图服务

    一核三制五团组图服务一核三制五团组图服务二核二弹:「21天」1. X 在汉字中的左、右、右三个部位,判断出n是偏旁,并且使用了该部位和那部位的第一个部位,可改为v (in ),简称…

    科研百科 2024年11月21日
    0
  • 申博暑期科研项目

    申博暑期科研项目 近年来,随着国内高等教育的不断发展和出国交流机会的增多,申请国外博士学位变得越来越容易。然而,对于想要进一步提高自己学术水平、拓展学术视野的人来说,申请博士学位仍…

    科研百科 2025年3月24日
    0
  • 如何做好建筑工程项目精细化管理?(如何做好施工项目的精细化管理)

    长期以来,建筑工程施工管理较为粗放,存在资源浪费、能耗高、环境污染严重等诸多问题。当今社会,人们对生活品质要求越来越高,节能环保意识越来越强,建筑工程施工管理必须转变方式,采用更加…

    科研百科 2022年6月29日
    203