以前写过一篇《Ubuntu 使用Openwrt SDK交叉编译ipk包过程全纪录(超多图)》的文章,详细介绍了如何使用OpenWrt SDK编译ipk安装包的方法。在BB 14.04, CC 15.05, CC 15.05.1版本的SDK上编译一些常见的第三方ipk包都非常容易。这个要得益于OpenWrt SDK行之有效的工具链和链接方式。但是同样的Makefile文件搬到Pandora(潘多拉固件)和LEDE的SDK上时,就没有OpenWrt平台上那么简单了。这两个平台的SDK为我们挖了很多大坑,小白第一次编译往往会被搞得一头雾水。
首先我们先下载pandorabox和lede的SDK
PandoraBox,国内网站已经下载不到了,好在其他地方的还能够下载,从下面的地址不光可以下载到SDK,还可以下载到国内个大厂路由器的固件
http://download.pandorabox.com.tw:99/pandorabox/17.09/
注:根据2017年年底的消息,Pandorabox因为商标恶意注册的问题改名为pangubox,同时也更换了官网,所以Pandorabox最后一版为17.09版,然而pangubox并没有让我们失望,其当前最新版18.07版不仅和以前一样提供了常见国内外路由器的固件、软件包和SDK,还提供了ImageBuilder,可以依托于pangubox直接生成自定义固件了。而且新版SDK的toolchain从原来的gcc 4.8.0升级到了4.9,下载地址如下
https://downloads.pangubox.com/pandorabox/
然后是LEDE的包,固件,feeds下载地址,由于LEDE经常更新,所以内容也会经常变化,可以选择自己喜欢的版本,进去下载SDK或者软件包
https://downloads.lede-project.org/releases/
其实多数的编译不成功都是由于依赖库没有正确的引入引起的,还有一个常见原因是你计算机的Linux没有很好的部署编译环境引起的。
所以跳过潘多拉或者LEDE SDK的大坑其实不麻烦,只要正确的导入第三方依赖库并配置好本地开发环境即可,下面我以Ubuntu16.04 LTS 64位为例介绍一下潘多拉/LEDE相比OpenWrt SDK可能会碰到的问题。主要目的是解决在OpenWrt下能成功编译到了潘多拉或者LEDE就无法编译的问题。如果OpenWrt SDK也无法编译则不在本文的讨论范围之内。
(注意:请不要使用32位操作系统,否则make menuconfig打不开,也不推荐使用Ubuntu14.04,16.10等版本,因为这些系统上失败的案例较多且不好解决)
首先以潘多拉SDK为例,潘多拉16-10稳定版的固件和SDK下载地址为:http://downloads.pandorabox.com.cn/pandorabox-16-10-stable/targets/ralink/ ,可以选择mt7620 和 mt7621两个平台的固件和SDK下载,本文以小米路由器mini为例所以使用的是mt7620的SDK, rt305x芯片如华为HG255D只提供了固件没有提供toolchain或SDK,所以不在本文讨论范围之内。
我们向往常一样解压潘多拉的SDK,然后克隆一个项目的Makefile到package目录下,这里以SSR为例
git clone https://github.com/AlexZhuo/openwrt-shadowsocksr.git package/shadowsocksr-libev
然后选择要编译的IPK安装包
make menuconfig
然后执行编译
<