新增軟體包
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_cat 表示源**檔案的解壓方法。包括 zcat, bzcat, unzip 等。
pkg_build_dir 表示軟體包編譯目錄。它的父目錄為$(build_dir)。如果不指定,預設為$(build_dir)/$( pkg_name)/$( pkg_version)。
編譯包定義
應用程式和核心驅動模組的定義不一樣。應用程式軟體包使用 package,核心驅動模組使用 kernelpackage。
應用程式編譯包的定義
應用程式的編譯包以 package/開頭,然後接著軟體名,在 package 定義中的軟體名可以與軟體包名不一樣,而且可以多個定義。
核心驅動模組包的定義
linux 分為核心空間和使用者空間。開發者開發的核心部分可以直接加入 linux 的 kernel程式,也可以生成核心模組以便需要時裝入核心。openwrt 一般希望開發者生成核心模組,在 linux 啟動後自動裝載或手工使用 insmod 命令裝載。核心模組使用 kernelpackage 開頭,其他與一般應用軟體包基本相同。
使用定義
完成前面定義後,必須使用 eval 函式實現各種定義。其格式為:
# 對於一般應用軟體包
$(eval $(call package,$(pkg_name)))
# 對於核心驅動模組
$(eval $(call kernelpackage,$(pkg_name)))
例項這裡列舉 widora 的 web配網頁的驅動
#
#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 函式實現各種定義
openwrt 新增web介面
要給自己的開發板新增上 web 介面,只需要在 openwrt原始碼中,將 luci 配置進去即可。首先進入 openwrt原始碼頂層目錄,然後執行 make menuconfig 命令。sz yy szyy pc home linux openwrt trunk make menuconfig 然...
OpenWRT新增 crontab開機預設執行
openwrt系統預設已經新增了crond,只是沒有配置預設配置引數,致使服務起不來。1.修改啟動指令碼 etc ini.d cron etc rc.d s50cron為 etc ini.d cron的鏈結 bin sh etc rc.common start 50 service use pid ...
Openwrt中新增ndpi支援
ndpi ntop deep package inspection 能實現深度包檢測,雖然openwrt沒有原生支援,但是有高手已經將其移植到openwrt之上。新增ndpi的方法如下 2.在openwrt原始碼目錄的package資料夾中新建乙個資料夾,資料夾名隨意,譬如ipt ndpi 3.開啟...