
- mkdir /orgpackages
- svn co svn://svn.openwrt.org/openwrt/packages /orgpackages
用上了openwrt,自然软件就是迫切需要的,有时候需要的软件找不到,求人未必有现成的,所以还是那句话好,求人不如求己,自己编译好了。
编译软件有两种方法:
第一种是在编译openwrt的时候顺带编译软件,这种最简单,比较容易学会。
根据lostinfever和g大的指导,make跟不同的参数可以达到不同的效果:
1.make package/xxx/{clean,compile,install} V=99 :xxx是原生包的名字
2.make package/feeds/packages/xxx/{clean,compile,install} V=99 :xxx是feeds维护包的名字
3.make kernel: 直接编译uImage
第二种是直接基于openwrt的sdk交叉编译软件,这种要求有较高的编程能力和配置能力。
第三种是直接在运行openwrt的pogoplug上编译,经测试,由于openwrt.org超过4年没有对build-essential组件进行更新,且目前只允许x86平台编译build-essential组件,想自动化配置好openwrt下的编译环境存在相当大的困难。
本教程着重介绍第一种编译方法,第二、三种编译方法有大神可以分享一下的话最好,我还在研究中(研究编译openwrt上pogoplug用的mldonkey)
第一种编译方法的前提是准备好编译openwrt的编译环境,参考99大的http://bbs.qzxx.com/thread-13106-1-1.html能够完整编译出openwrt。
这里顺带提一点,编译环境最好在虚拟机中装一个ubuntu或者debian等linux操作系统中做,没有必要用实物机做。。。
有了编译好openwrt的环境后,下面就是编译软件了。
1.新编译软件
举个例子好了,比如我需要编译transmission-daemon
进入openwrt源码所在目录,输入make menuconfig,进入模块配置界面
下载 (96.37 KB)
2013-9-18 13:20
找到transmission-daemon,输入M或用空格切换,使其变成“M”状态。
下载 (102.3 KB)
2013-9-18 13:22
然后一直退出,最后提示是否保存设置时,选择“yes”
下载 (45.12 KB)
2013-9-18 13:23
回到命令行状态,再执行make V=99执行编译。
编译完以后,你就会在./bin/oxnas/packages下找到新编译的transmission-daemon_2.71-1_oxnas.ipk和其他依赖和其他软件的包,建议参考http://bbs.qzxx.com/viewthread.php?tid=13109自建源,把刚编译packages下的所有文件放在自建源里,就可以通过opkg安装或升级软件了。
如果想找模块列表里面有没有我需要的软件,但又不知道在哪个菜单下,可以这么操作:
在make menuconfig的界面中,按键盘的/键(问号的键),就会弹出检索窗口,然后输入软件名字回车搜索(模糊查询的),比如我输入transmission,查询结果显示有没有匹配项,有的话在哪个位置和依赖项。
下载 (103.55 KB)
2013-9-18 14:15
图上说明了,transmission-daemon在Network->BitTorrent下(Location);选上transmission-daemon后,会把依赖项libcurl、libpthread等类库选项和编译的(Selects);如果把luci-app-transmission选上,就会自动选上transmission-daemon(Selected by)。
还有一种情况,就是用/键能查出来位置在哪,但去到那个地方却没有这个选项,如编译minidlna。
下载 (121.42 KB)
2013-9-18 14:17
从图上可以看到,还有一个条件,就是选上libffmpeg-cusom、libffmpeg-full、libffmpeg-mini随便一个,minidlna才可见(Depends on)。
2.更新软件
openwrt自带的软件版本未必都是最新的,有些软件新版本有新功能,或者修复bug,要么等openwrt更新,其实可以自己编译软件新版本的。
自己更新软件版本,其实就是把软件的源码更新并且编译就行了,而且openwrt编译软件时,用的是模版化的Makefile,和附带的file和patches,这些东西可以自己写,但要求比较高,好在openwrt.org(英文的,openwrt.org.cn的来源)的源码里面相当部分的软件都已经更新了,我们可以借用openwrt.org的新版本来替换现在openwrt.org.cn上的较低版本,来达到升级软件的目的。
首先是获得openwrt.org上的包最新版本,还是在原来编译openwrt的环境中
新建一个目录存放openwrt.org的包
复制代码
获得最新的包
复制代码
在获得的包数据里面,找到transmission目录:/orgpackages/net/transmission
对比该目录下的Makefile和原来编译openwrt下的目录./feeds/packages/net/transmission下的Makefile
openwrt源码上transmission的Makefile
下载 (83.43 KB)
2013-9-18 13:54
openwrt.org上transmission的Makefile
下载 (83.34 KB)
2013-9-18 13:55
可以看出,openwrt源码上的transmission的版本是2.71,openwrt.org上的版本是最新的2.82
接下来就简单了,用openwrt.org的版本代替,然后重新编译就行了
注意:建议不直接替换文件,而是把原来的版本清空,新版本复制进去,因为有可能新版本patches目录里文件少了或者不需要,仍然保留老版本的patches文件可能会导致编译出错的。
代替后重新make V=99,新版本的transmission就编译出来了transmission-web_2.82-1_oxnas.ipk
是不是很简单?


相关文章- openwrt修改默认中文
- Luci实现框架
- v2hxray-doc
- gcc 从5.3升级 6.1 openwrt编译出错后续2 gcc6.h: No such file
- gcc 从5.3升级到6.1之后 openwrt pkg-config glib编译报错修复办法
- openwrt luci界面修改
- 15.05 openwrt oxnas pogoplug 固件
- gcc 从5.3升级6.1 openwrt编译出错后续3 cfns.gperf errorr
- openwrt 每日进度 20140815
- OpenWrt for Mini6410/Tiny6410 with GTK,QT,OpenCV
本文地址:https://blog.sxx1314.com/openwrt/42.html
版权声明:若无注明,本文皆为“unix 软硬件 技术宅 ”原创,转载请保留文章出处。百度已收录















