openwrt之添加OpenWrt软件包概述

第一章 添加OpenWrt软件包概述

添加软件包

​ 在源码 package 目录下创建一个目录,以包含该软件包的各种信息和与 OpenWrt 建立联系的文件。然后创建一个 Makefile 与 OpenWrt 建立联系,Makefile 需要遵循 OpenWrt 的约定。另外可以创建一个 patchs 目录保存 patch 文件,对下载的源代码进行适量修改。

Makefile引入文件

OpenWrt 使用三个 makefile 的子文件,分别为:

include $(TOPDIR)/rules.mk 
include $(INCLUDE_DIR)/kernel.mk 
include $(INCLUDE_DIR)/package.mk 
# 由这些 makefile 子文件确立软件包加入 OpenWrt 的方式和方法

编写软件包基本信息

软件包的信息均以 PKG_开头: 
PKG_NAME 表示软件包名称,将在 menuconfig 和 ipkg 可以看到。 
PKG_VERSION 表示软件包版本号。 
PKG_RELEASE 表示 Makefile 的版本号。 
PKG_SOURCE 表示源代码的文件名。 
PKG_SOURCE_URL 表示源代码的下载网站位置。@SF 表示在 sourceforge 网站,@GNU 表示在 GNU 网站,还有@GNOME、@KERNEL。 
PKG_MD5SUM 表示源代码文件的效验码。用于核对软件包是否正确下载。 
PKG_CAT 表示源代码文件的解压方法。包括 zcat, bzcat, unzip 等。
PKG_BUILD_DIR 表示软件包编译目录。它的父目录为$(BUILD_DIR)。如果不指定,默认为$(BUILD_DIR)/$( PKG_NAME)/$( PKG_VERSION)。

编译包定义

应用程序和内核驱动模块的定义不一样。应用程序软件包使用 Package,內核驱动模块使用 KernelPackage。

  1. 应用程序编译包的定义

    应用程序的编译包以 Package/开头,然后接着软件名,在 Package 定义中的软件名可以与软件包名不一样,而且可以多个定义。

  2. 内核驱动模块包的定义

    Linux 分为内核空间和用户空间。开发者开发的内核部分可以直接加入 Linux 的 Kernel程序,也可以生成内核模块以便需要时装入内核。OpenWrt 一般希望开发者生成内核模块,在 Linux 启动后自动装载或手工使用 insmod 命令装载。内核模块使用 KernelPackage 开头,其他与一般应用软件包基本相同。

  3. 使用定义

    完成前面定义后,必须使用 eval 函数实现各种定义。其格式为:

    
    # 对于一般应用软件包
    
    $(eval $(call Package,$(PKG_NAME)))
    
    # 对于内核驱动模块
    
    $(eval $(call KernelPackage,$(PKG_NAME)))
  4. 实例

    这里列举 widora 的 web配网页的驱动

    扫描二维码关注公众号,回复: 1035210 查看本文章
#
Copyright (C) 2013-2014 OpenWrt.org
#
This is free software, licensed under the GNU General Public License v2.
See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk
PKG_NAME:=webui
PKG_RELEASE:=1
PKG_BUILD_DIR:=(BUILD_DIR)/(PKG_NAME) #使用(PKG_NAME)只是做一个标示,并非真正使用(PKG_NAME)
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk

define Package/webui
    SECTION:=Ralink SDK Mango #包的类型
    CATEGORY:=Ralink SDK Mango #表示分类,在 make menuconfig 的菜单下将可以找到
    TITLE:=setwifi by web #软件包简短描述
    DEPENDS := #与其他软件的依赖
endef

define Package/webui/description #软件包的详细描述
    This package provides  UCI for wifi Configuration.
endef

define Build/Prepare #编译准备方法
        echo
endef

define Build/Compile #编译方法
        echo
endef

define Package/webui/install #软件包的安装方法
    $(INSTALL_DIR) $(1)/www/
    $(CP) ./files/www/* $(1)/www/
endef

(eval (call BuildPackage,webui)) #使用 eval 函数实现各种定义

猜你喜欢

转载自blog.csdn.net/robothj/article/details/80035049
今日推荐