Openwrt开发笔记(2)—— 创建自己的模块HelloWord

本文介绍了如何在OpenWRT环境中模仿现有软件包创建一个名为HelloWord的自定义包,该包包含一个CGI程序。首先在package/network/services下创建文件夹并编写源代码及makefile。CGI程序通过标准输出与web服务器交互。接着,通过make菜单配置将新包添加到系统,并编译验证。最后,通过访问http://192.168.1.1/cgi-bin/helloword在浏览器中查看结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建自己的包

开发的第一步来自于模仿,我们模仿openwrt内部的软件包来创建自己的软件包helloword。

这里为了更好的展示,我们使用uhttpd(openwrt默认的web服务器)来运行helloword。这里就需要将helloword安装成uhttpd的CGI程序,供网页调用。话不多说,步骤如下。

创建包文件夹

在package/network/services下新建文件夹helloword
在这里插入图片描述
里面包含src文件夹,src中建立2个文件,一个是hello.c的源文件,一个是对应的makefile
在这里插入图片描述
如下是文件内容

在这里插入图片描述在这里插入图片描述
简单讲一下怎么输出:
这个编译完我们是可以直接运行的,不过直接make的话需要将$(GCC)先改成gcc,运行一下试试看
CGI程序是靠标准输出输出传递数据的,即web服务器通过stdin将数据传输给CGI程序,CGI程序通过STDout将数据返回给服务器,所以这里直接printf即可,就可以将数据打印到标准输出上由服务器接收。

在src文件夹外再建立一个makefile,用于openwrt的模块编译
在这里插入图片描述文件内容如下:


include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/package.mk

PKG_NAME:=helloword
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)

define Package/helloword
	SECTION:=net
	CATEGORY:=Network
	DEPENDS:=uhttpd +libuci
	TITLE:=Build for helloword
endef

define Package/helloword/description
    this is package for sdk
endef

define Package/helloword/Prepare
	mkdir -p $(PKG_BUILD_DIR)
	$(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/helloword/compile

endef


define Package/helloword/install
	$(INSTALL_DIR) $(1)/www/cgi-bin
	$(INSTALL_BIN) $(PKG_BUILD_DIR)/helloword $(1)/www/cgi-bin/helloword
endef

$(eval $(call BuildPackage,helloword))

CATEGORY 是表示此模块是在那个子模块下,这里后面make配置的时候会用到
PKG_RELEASE 是包版本,用于包升级
DEPENDS 是依赖,本程序后面要作为CGI程序使用,所以要依赖uhttpd
define Package/helloword/install下面的内容为什么选择www/cgi-bin,是因为uhttpd默认的CGI文件夹位于此,所以要安装在这里。
剩下的都是仿照其他模块写的,copy即可

后面是模块编译验证

./scripts/feeds update -a

更新一下包管理,这样可以将自己新增的模块更新到config列表中

make menuconfig

选择network中的helloword
在这里插入图片描述在这里插入图片描述这里有点小差别,点击Y的时候是编译到固件包中去,点击M的时候是编译成模块,差异暂时未知,这里选择Y

因为要用到uhttpd,这里将uhttpd也选择了
在这里插入图片描述
这里深化记忆mk对于配置菜单的作用

network下的webservers
在这里插入图片描述在这里插入图片描述
好了,选择完之后我们保存退出,测试一下模块编译

make package/network/services/helloword/compile

在这里插入图片描述编译没有报错,我们可以去编译文件夹下找到编译出来的ipk文件。

在这里插入图片描述这里我们先暂不考虑IPK文件怎么安装到路由器中,模块其实已经添加好了,按照全部编译完成后刷到路由器中去。

输出

升级完成之后在浏览器输入
http://192.168.1.1/cgi-bin/helloword 即可看到网页出现

更多问题尽情讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值