Ubuntu 使用Openwrt SDK交叉编译ipk包过程图文全纪录

刚刚买了一个网件wndr4300路由器,快递还没送来就已经开始琢磨刷机的事了。卖家提供了一个明月的op固件,里面功能超级多但是非常臃肿,我在hg255d上的使用经验告诉我这样臃肿的包非常耗费CPU资源,而且会导致网速变慢和无故重启。恩山上大神编译的几乎都是添加了很多应用的固件。而我只需要一个ss功能就够了,最好有luci界面,所以决定自己编译出ipk包放到路由器上使用opkg安装。

首先去openwrt ss的github官网,https://github.com/shadowsocks/openwrt-shadowsocks 这上面只给了makefile文件,没有c源码,因为c源码都在Shadowsocks-libev项目上,在makefile时会自动的去github上下载一个tar包,然后编译那里面的文件,如https://github.com/shadowsocks/openwrt-shadowsocks/releases/download/v2.5.5/shadowsocks-libev-2.5.5.tar.gz,如果你网速很慢可以把makefile中相关的url改掉换成本地下载好的tar包。正常情况下我们不需要修改makefile就能正常编译。

注意:在编译过程中会联网下载大量的依赖库,所以一定要保证网络畅通稳定,否则会频繁失败,我在下载依赖库的时候都不到2KB/s。

网上很多编译ss的教程都是2014年的,它们都是直接clone openwrt的源码,然后用openwrt的源码编译出很多编译工具再编译apk,这样做非常的耗时,我亲自试过大概花了3个多小时也没成功,自从有了SDK之后就不用这么麻烦了,编译过程10几分钟就可以搞定。同样github上也推荐我们使用SDK进行编译。

注意:SDK版本要选择适合你路由器及路由器上系统的,比如CC15.05 SDK编译出来的ipk不能装载trunc版上,反之亦然,所以我们要选择适合路由器上openwrt系统的SDK,下文以wndr4300 CC 15.05 版openwrt为例。

首先去openwrt的官网下载相关SDK, 如果你要编译的不是wndr4300,可以去根目录自己通过CPU,内存类型选择相应的SDK进行下载,这里就不废话了。

Ubuntu 使用Openwrt SDK交叉编译ipk包过程图文全纪录

如上图,第一个黄线是编译固件要用的ImageBuilder,是编译完整固件用的,我们只编译ipk软件包所以用不到,第二个黄线就是我们要用的SDK文件了

第三个和第四个都是纯净版的OP系统,可以下载然后刷到wndr4300路由器里面,一个是原有OP网页刷,一个是原版或者tftp刷的固件。刷入这个固件然后再opkg安装我们编译出的ipk包就具备相关功能了。所以此时我们首先下载SDK。

下载完成之后放到一个好记而且没有权限限制的目录中,比如我在我的用户目录下建立一个叫OP_SDK的文件夹,然后把这个tar包放进去

Ubuntu 使用Openwrt SDK交叉编译ipk包过程图文全纪录

注:我是用的winscp放进去的,在linux下可以直接使用wget  来下载这个tar包

放上去之后我们解压这个tar包

tar xjf OpenWrt-SDK-15.05-ar71xx-nand_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2

解压完之后 OP_SDK目录下就会出现一个和tar包同名的文件夹,这里面就是我们要用到交叉编译的SDK了

然后做非常重要的一步,安装编译相关的依赖库文件,否则进不去make menuconfig

sudo apt-get update sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip gawk sudo apt-get install subversion mercurial

而且还有非常重要的一步,是安装c编译环境,当初我就因为ccache没有安装导致一晚上都白忙活

sudo apt-get install ccache  

因为ccache Ubuntu 16.04没有默认安装,导致编译的时候一直报 C compiler cannot create executables错误,浪费了很多时间

基本的环境安装完成之后,我们就可以开始编译工作了,注意保持网络畅通

根据github上的README即可

cd ./OpenWrt-SDK-15.05-ar71xx-nand_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/ # 安装 feeds ./scripts/feeds update packages ./scripts/feeds install libpcre =============先到这里暂停============= # 获取 Makefile git clone https://github.com/shadowsocks/openwrt-shadowsocks.git package/shadowsocks-libev # 选择要编译的包 Network -> shadowsocks-libev make menuconfig # 开始编译 make package/shadowsocks-libev/compile V=99

现在我们先开始安装feeds,就是用来选择编译什么插件用的列表

安装feeds的第一行命令会联网下载feeds列表,比较费时,第二行会报miss index的warning,不用管。

Ubuntu 使用Openwrt SDK交叉编译ipk包过程图文全纪录

Ubuntu 使用Openwrt SDK交叉编译ipk包过程图文全纪录

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14833.html