路由器 A731-406CTL-C01_R04 源码编译

最近入手了一个RG100A-BA,因为要使用ADSL功能,所以放弃考虑OpenWRT系列固件。

发现网上盛传的一个路由器固件可以刷给RG100A-BA,而且还比较稳定,并且还是开源的。

所以下载了一份源码,打算自己编译玩玩。折腾了几天,终于搞定,写篇文章记录一下~

提示: 在32位linux系统中可能遇到的问题要比64位系统中要少一些。

源码下载: A731-406CTL-C01_R04.tar.gz

编译环境: Ubuntu 15.04 x64

 

安装环境的配置:

下载并解压缩源码包,可以使用 consumer_install 脚本来进行安装环境的配置。

或者直接解压缩 uclibc-crosstools-gcc-4.4.2-1.tar.bz2 到 /opt/toolchains/uclibc-crosstools-gcc-4.4.2-1 目录下。

默认 bcm963xx_4.06L.02_consumer.tar.gz 也应该解压到 /opt/ 下面的,不过解压到别处也可以正常编译。

解压后 bcm963xx_4.06L.02_consumer.tar.gz 后进入到真正的源码根目录里面,因为原版的Makefile会验证make和系统kernel的版本,不一样会提示错误,导致无法继续进行编译。所以需要修改一下Makefile的几处代码。

在第39行:

make_version_checkkernel_version_check删除即可:

修改完成后保存,可以进行编译操作了。

 

编译路由器固件:

打开终端并进入源码根目录,执行命令:

可用的配置,可以进入targets目录下面查看,不过好像只有AR-5382u_CTL是可用的。

等待一段时间,可能会出现以下错误:

这是因为fakeroot脚本中默认的fakeroot路径在 /opt/bcm963xx/hostTools/fakeroot 

当源码没有解压到 /opt/bcm963xx 就会出现这种情况。

对于源码路径不对应的情况下,可以通过修改源码根目录下的Makefile来解决。

第662第665行:

修改成下面代码即可:

修改完成后重新回到源码根目录,重新make:

 

在编译userspace目录下的代码时,可能因为缺少 uclibc-crosstools-gcc-4.2.3-3 交叉工具链而中断编译过程。

可以下载EVG2000_v2.2.0.12_with_toolchain_src.tar.bz2.zip文件,并提取其中的交叉工具链解压到 /opt/toolchains/uclibc-crosstools-gcc-4.2.3-3 目录下。

 

如果在64位系统下,还可能出现以下错误:

解决方法: 切换到 hostTools/fakeroot 目录下,运行:

出现这种错误的原因是,fakeroot的库和Makefile是预构建于i686的,64位linux加载存在一些问题,只要重新配置生成Makefile再make就可以了。

 

同样,修改完成后还需要重新回到源码根目录,重新make:

等待一会儿~~~如果终端输出以下提示,说明构建成功了~

 

其它错误以及解决方案:

错误提示:

原因:

64位linux缺少32位运行库。

解决方法:

 

Print Friendly, PDF & Email

留下评论

5 × 1 =

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: