找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 21486|回复: 55

OpenWrt进阶编译一:ipk编译方式

 火.. [复制链接]
发表于 2015-11-11 21:46 | 显示全部楼层 |阅读模式
本帖最后由 haxc 于 2015-11-18 19:52 编辑

OpenWrt进阶编译 一:ipk编译方式

By:Haxc

名词解析:
AA:12.09 branch (Attitude Adjustment)
BB:14.07 branch (Barrier Breaker)
CC:15.05 branch (Chaos Calmer)
DD:Designated Driver


编译前准备工作:openwrt基础编译教程曲调版
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=176017

一:论openwrt编译ipk文件方式:

1:
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 ###段,在下面添加:

$(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中才能出现新加的选项:
./scripts/feeds update -a -i
./scripts/feeds install -a


二:package 类 ipk编译

文件放在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键
tab键开头的语句是用作执行命令的。
也就是说要当成执行shell命令才能以tab开头,否则只能以空格开头    by:hackpascal


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
        chmod 755 /etc/init.d/xunlei  >/dev/null 2>&1   #添加文件执行权限
        exit 0
}
endef

define Package/$(PKG_NAME)/install
        $(CP) ./files/* $(1)  #复制files目录下所有文件
        $(INSTALL_DIR) $(1)/usr/lib/lua/luci/i18n  #设定lmo文件目录
        $(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前面添加
chmod 755 /etc/init.d/xunlei

./file 为package/xunlei目录下file文件夹:package/xunlei/file


OpenWrt下编译ipk文件大致就是这样,如果是下载别人的源码,放到相应的目录即可

编译好ipk文件,可以用winrar打开后解压缩出源文件。





评分

参与人数 6恩山币 +12 收起 理由
song6*** + 1
hurri*** + 1 一看就是觉得高端、大气、上档次!
99*** + 3 城会玩
sias*** + 1 牛逼的很详细!!!
laom*** + 5 论坛有你更精彩
wgy*** + 1 一看就是觉得高端、大气、上档次!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2015-11-11 21:46 | 显示全部楼层
占位

评分

参与人数 1恩山币 +5 收起 理由
laom*** + 5 嗷嗷嗷

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-11 22:43 | 显示全部楼层
路过,顶一个。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-11 22:53 | 显示全部楼层
{:soso_e194:}好高深啊,看得头晕
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-12 06:31 来自手机 | 显示全部楼层
顶上去,期待后续。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-11-12 08:47 来自手机 | 显示全部楼层
本帖最后由 haxc 于 2015-11-23 20:39 编辑

你们有什么想问的吗?小白不懂就问,老鸟可以指出不足

添加一些前辈们的教程:

Openwrt编译 Packges封装
http://see.sl088.com/wiki/Openwr ... s%E5%B0%81%E8%A3%85

openWRT添加模块(四)
http://blog.csdn.net/teddy99999/article/details/17537545

点评

楼主你好,我有几个问题请教一下: 1、这是我的帖子OSCAM交叉编译详细步骤 这种方法编译出来的程序只能通过手工方式进行安装和配置,所以想直接生成ipk安装包,有网友指点了一下,但还是不得要领。 利用网友提供  详情 回复 发表于 2015-11-15 21:40
大神,为这个帖子专门注册了账号~ 我是想在编译的时候把luciwifidog编译到固件里面,这种方法可以么?  详情 回复 发表于 2015-11-14 16:30
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-12 12:23 | 显示全部楼层
好帖,留个名仔细看
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-12 12:34 | 显示全部楼层
好贴,,,顶一个。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-14 02:00 | 显示全部楼层
看不懂,先收藏!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-14 08:39 | 显示全部楼层
学习,收藏!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-14 16:30 | 显示全部楼层
haxc 发表于 2015-11-12 08:47
你们有什么想问的吗?小白不懂就问,老鸟可以指出不足

大神,为这个帖子专门注册了账号~
我是想在编译的时候把luciwifidog编译到固件里面,这种方法可以么?

点评

可以啊  详情 回复 发表于 2015-11-14 20:13
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-14 16:34 | 显示全部楼层
大神你好,请问我下载了别人编译好的IPK文件,也安装好了,但是没有luci,应该如何设置和启用?
比如这个程序:https://github.com/wongsyrone/openwrt-Pcap_DNSProxy

点评

/etc/inid.d/xxxxxxx enable /etc/inid.d/xxxxxxx start  详情 回复 发表于 2015-11-14 20:14
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-11-14 20:13 | 显示全部楼层
xuanming 发表于 2015-11-14 16:30
大神,为这个帖子专门注册了账号~
我是想在编译的时候把luciwifidog编译到固件里面,这种方法可以么?

可以啊

点评

已经按照帖子方式搞定了,但是目前还有一个问题就是,编译完成之后,wifidog不能使用。 用WinSCP进到路由器里面,看/etc/init.d目录下的wifidog没有执行权限,把权限改成0755就好了,但是直接刷进去就是没有执行权  详情 回复 发表于 2015-11-18 11:27
已经按照帖子方式搞定了,但是目前还有一个问题就是,编译完成之后,wifidog不能使用。 用WinSCP进到路由器里面,看/etc/init.d目录下的wifidog没有执行权限,把权限改成0755就好了,但是直接刷进去就是没有执行权  详情 回复 发表于 2015-11-18 11:26
已经按照帖子方式搞定了,但是目前还有一个问题就是,编译完成之后,wifidog不能使用。 用WinSCP进到路由器里面,看/etc/init.d目录下的wifidog没有执行权限,把权限改成0755就好了,但是直接刷进去就是没有执行权  详情 回复 发表于 2015-11-18 11:26
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-11-14 20:14 | 显示全部楼层
liangxy 发表于 2015-11-14 16:34
大神你好,请问我下载了别人编译好的IPK文件,也安装好了,但是没有luci,应该如何设置和启用?
比如这个 ...

/etc/inid.d/xxxxxxx enable
/etc/inid.d/xxxxxxx start
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-11-14 20:25 | 显示全部楼层
解释得不错啊,顶你
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-25 13:50

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表