openwrt 添加应用的几个步骤如下:
(1)在目录 ./feeds/luci/applications 下添加要增加的应用,譬如 "luci-test"
(2)里面应该包含以下几个目录
hbg@root:~/trunk/feeds/luci/applications/luci-test$ tree
.
├── ipkg // 1、包相关
│ ├── conffiles
│ ├── postinst
│ └── postrm
├── luasrc // 2、web界面相关
│ ├── controller
│ │ └── test.lua
│ ├── model
│ └── view
├── Makefile // 3、编译相关
├── po
│ ├── en
│ │ └── test.po
│ └── zh_CN
│ └── test.po
├── root // 4、/etc/目录下相关文件
│ ├── config
│ │ └── test
│ ├── init.d
│ │ └── test
│ └── uci-defaults
│ └── luci-dtest
└── src // 5、实现功能的主程序
├── test.c
└── test.h
(3)除此之外,还需要修改 ./feeds/luci/contrib/package/luci 目录下的makefile,使其能够在 make menuconfig 中显示。
$(eval $(call application,dtest, test 1.0,\
+PACKAGE_luci-app-test:libuci +libpthread +libubox +librt))
然后就可以在 make menuconfig中查找到test的选项了。
注意: 在执行命令"make menuconfig"之前,需要先清空 /tmp目录。
补充知识:
Categories(luci目录)
The LuCI modules are divided into several category directories, namely:
- applications (Single applications or plugins for other modules or applications, 应用)
- i18n (Translation files, 翻译文件)
- libs (Independent libraries, 独立的库)
- modules (Collections of applications, 应用集合)
- themes (Frontend themes, 前端主题)
Each module goes into a subdirectory of any of this category-directories.
Module directory
The contents of a module directory are as follows:
Makefile
This is the module's makefile. If the module just contains Lua source code or resources then the following Makefile should suffice.
如果module中只有 lua 代码文件和资源文件,那么Makefile包含如下内容足以:
include ../../build/config.mk
include ../../build/module.mk
If you have C(++) code in your module your Makefile should at least contain the following things.
如果module中包含了 C 或 C++ 代码文件,则需要包含如下内容:
include ../../build/config.mk
include ../../build/gccconfig.mk
include ../../build/module.mk
compile:
# Commands to compile and link your C-code
# and to install them under the dist/ hierarchy
clean: luaclean
# Commands to clean your compiled objects
src
The src directory is reserved for C source code.
src 目录用来保存 C源码。
luasrc
luasrc contains all Lua source code files. These will automatically be stripped or compiled depending on the Make target and are installed in the LuCI installation directory.
Luasrc 目录用来保存所有的 lua 源代码。
lua
lua is equivalent to luasrc but containing Lua files will be installed in the Lua document root.
htdocs
All files under htdocs will be copied to the document root of the target webserver.
htdocs 目录将被拷贝到目标webserver下的文档根目录。
root
All directories and files under root will be copied to the installation target as they are.
拷贝到设备的根目录下。
dist
dist is reserved for the builder to create a working installation tree that will represent the file system on the target machine. DO NOT put any files there as they will get deleted.
ipkg
ipkg contains IPKG package control files, like preinst, posinst, prerm, postrm. conffiles. See IPKG documentation for details.