找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

 火.. [复制链接]
本帖最后由 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.
 楼主| | 显示全部楼层
占位

评分

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

查看全部评分

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

使用道具 举报

路过,顶一个。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

{:soso_e194:}好高深啊,看得头晕
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

来自手机 | 显示全部楼层
顶上去,期待后续。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
本帖最后由 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.
回复

使用道具 举报

好帖,留个名仔细看
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

好贴,,,顶一个。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

看不懂,先收藏!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

学习,收藏!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

haxc 发表于 2015-11-12 08:47
你们有什么想问的吗?小白不懂就问,老鸟可以指出不足

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

点评

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

使用道具 举报

大神你好,请问我下载了别人编译好的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.
回复

使用道具 举报

 楼主| | 显示全部楼层
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.
回复

使用道具 举报

 楼主| | 显示全部楼层
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.
回复

使用道具 举报

解释得不错啊,顶你
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

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

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

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

GMT+8, 2024-4-29 04:18

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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

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