openwrt中自带一整套包管理机制,正确使用openwrt的包管理机制可有效提高开发效率
本文介绍如何在openwrt中增加一个自定义的应用包
1、在package下创建一个应用程序目录hello,并在hello下再创建一个src用于存放源码文件
$ cd package
$ mkdir hello
$ cd hello
$ mkdir src
2、在hello目录下创建Makefile,内容如下
$ cd hello/
$ vim Makefile
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=hello
PKG_VERSION=1
PKG_RELEASE:=1.0
PKG_BUILD_DIR := $(KERNEL_BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/hello
SECTION:=utils
CATEGORY:=hello
TITLE:=hello
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)
endef
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS)" \
CPPFLAGS="$(TARGET_CPPFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)"
endef
define Package/hello/install
$(INSTALL_DIR) $(1)/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/hello $(1)/bin/
endef
$(eval $(call BuildPackage,hello))
包名称:
PKG_NAME:=hello
版本:
PKG_VERSION=1
PKG_RELEASE:=1.0
描述:
define Package/hello
SECTION:=utils
CATEGORY:=hello
TITLE:=hello
endef
准备操作:
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)
endef
编译操作:
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
CFLAGS="$(TARGET_CFLAGS)" \
CPPFLAGS="$(TARGET_CPPFLAGS)" \
LDFLAGS="$(TARGET_LDFLAGS)"
endef
安装:
define Package/hello/install
$(INSTALL_DIR) $(1)/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/hello $(1)/bin/
endef
3、进入src/目录,创建Makefile,用于编译源文件
all:
$(CC) $(CFLAGS) hello_src.c -o hello
clean:
rm *.o hello
4、回到根目录,使用make menuconfig配置hello模块
$ cd openwrt/
$ make menuconfig
hello ---->
5、在根目录编译模块
$ cd openwrt/
$ make package/hello/compile V=s
6、变成成功后可在bin/package下看到生成的ipk包
7、导入ipk包到设备,使用opkg安装此包
$ opkg install hello_1-1.0_mipsel_24kc.ipk
成功安装后即可运行hello