LUCI app编译方式
By:Haxc
转载自:http://www.right.com.cn/forum/thread-178204-1-1.html
名词解析:
AA:12.09 branch (Attitude Adjustment)
BB:14.07 branch (Barrier Breaker)
CC:15.05 branch (Chaos Calmer)
DD:Designated Driver
编译前准备工作:openwrt基础编译教程曲调版
http://www.right.com.cn/forum/fo … read&tid=176017
一:feeds/luci编译luci app文件方式
aa和bb下luci类ipk源码目录结构:
让我们来看一下luci-xware3我目录结构
例子:/feeds/luci/applications/luci-xware3
.
├── luasrc
│ ├── controller
│ │ └── xware3.lua
│ └── model
│ └── cbi
│ └── xware3.lua
├── Makefile
└── root
└── etc
├── config
│ └── xware3
├── init.d
│ └── xware3
└── uci-defaults
└── luci-xware3
Luasrc下是lua界面的文件,root目录下是xware3所需要的配置文件,启动脚本
aa&bb下的Makefile文件是这样的:
PO = xware3 #/feeds/luci/po/zh_CN/xware3.po 中文翻译文件
include ../../build/config.mk
include ../../build/module.mk
按照上面的目录结构把文件放到/feeds/luci/applications/luci-xware3下
然后编译/feeds/luci/contrib/package/luci文件
找到### Applications ###段,在下面添加:
1 2 | $(eval $(call application, xware3,Luci configuration module, +PACKAGE_luci-app-xware3:+wget #这里添加依赖)) |
删除掉/build_dir/target-mips_34kc_uClibc-0.9.33.2/luci,luci-addons 这2个文件夹,或者执行make clean清除掉之前编译的文件
在make menuconfig中application菜单下选择想要编译的选项,运行 make V=99 即可编译出ipk文件了。
————————————————————————————————————
cc&dd的Makefile则是这样:
例子:/feeds/luci/applications/luci-hd-idle
.
├── luasrc
│ ├── controller
│ │ └── hd_idle.lua
│ └── model
│ └── cbi
│ └── hd_idle.lua
├── Makefile
├── po
│ ├── zh-cn
│ │ └── hd_idle.po
│ └── zh-tw
│ └── hd_idle.po
└── root
└── etc
└── uci-defaults
└── luci-hd_idle
include $(TOPDIR)/rules.mk
LUCI_TITLE:=Hard Disk Idle Spin-Down module
LUCI_DEPENDS:=+hd-idle #依赖文件,如果需要添加多个依赖:+wget +fdisk
include ../../luci.mk
# call BuildPackage – OpenWrt buildroot signature #这句一定要有,不然op编译菜单不显示出来
————————————————————————————————
然后执行下面2个命令,menuconfig中才能出现新加的选项:
1 2 | ./scripts/feeds update -a -i ./scripts/feeds install -a |
二:package 类luci app编译
文件放在package/xunlei目录下,下面是目录结构:
.
├── files
│ ├── etc
│ │ ├── config
│ │ │ └── xunlei
│ │ ├── init.d
│ │ │ └── xunlei
│ │ ├── uci-defaults
│ │ │ └── luci-xunlei
│ │ └── xware
│ │ ├── cfg
│ │ ├── xlatest
│ │ └── xlup
│ └── usr
│ └── lib
│ └── lua
│ └── luci
│ ├── controller
│ │ └── xunlei.lua
│ └── model
│ └── cbi
│ └── xunlei.lua
├── Makefile
├── po
│ └── xunlei.po
Makefile文件修改:注意Makefile的语法要用tab键
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-xunlei PKG_VERSION:=0.12 PKG_RELEASE:=17 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) PO2LMO:=$(BUILD_DIR)/luci/build/po2lmo #设定po2lom程序地址 include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) # $(PKG_NAME)为引用上面的PKG_NAME SECTION:=luci CATEGORY:=LuCI #类别 SUBMENU:=3. Applications #子菜单 DEPENDS:=+wget. #依赖 TITLE:=luci-app-xunlei PKGARCH:=all endef define Package/$(PKG_NAME)/description xware web UI endef define Build/Compile endef define Package/$(PKG_NAME)/postinst #!/bin/sh [ -n "${IPKG_INSTROOT}" ] || { ( . /etc/uci-defaults/luci-xunlei ) && rm -f /etc/uci-defaults/luci-xunlei /etc/init.d/xunlei enable >/dev/null 2>&1 exit 0 } endef define Package/$(PKG_NAME)/install $(CP) ./files/* $(1) #复制files目录下所有文件 $(PO2LMO) ./po/xunlei.zh-cn.po $(1)/usr/lib/lua/luci/i18n/xunlei.zh-cn.lmo #直接编译po翻译文件。 endef $(eval $(call BuildPackage,$(PKG_NAME))) |
主要修改编注红色的地方,/etc/init.d,/etc/uci-defaults下的文件一定要设置有执行权限,没有的话可以在define Package/$(PKG_NAME)/postinst段落里面的exit 0前面添加
1 | chmod +X /etc/init.d/xunlei |
./file 为package/xunlei目录下file文件夹:package/xunlei/file
OpenWrt下编译ipk文件大致就是这样,如果是下载别人的源码,放到相应的目录即可
编译好ipk文件,可以用winrar/7z等打开后解压缩出源文件。