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 ---->
<M> hello. 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