本帖最后由 laoma348 于 2019-5-8 17:45 编辑
首先安装ubuntu18.04,64位系统。
然后去这里下载gpl代码
https://dlcdnets.asus.com/pub/ASUS/wireless/RT-AC1200G+/GPL_RT-AC1200GPlus_300438251610.zip
然后解压。
比如我解压到/mnt下面。
安装编译环境依赖。
sudo apt-get install --no-install-recommends autoconf automake bash bison bzip2 diffutils file flex g++ gawk gcc-multilib gettext gperf groff-base libncurses-dev libexpat1-dev libslang2 libssl-dev libtool libxml-parser-perl make patch perl pkg-config python sed shtool tar texinfo unzip zlib1g zlib1g-dev lib32stdc++6 lib32z1-dev cmake lib32z1-dev lib32stdc++6
应该就是这些了,因为我的编译环境用很久了,记不清具体安装哪些了。
可以参考gpl文件夹里面的readme ,不过那个应该是在mips时代写的,距今太久,只能参考,具体使用中缺啥报错的话再装吧,随机应变。
编译前设置环境变量
export PATH=$PATH:/mnt/asuswrt/release/src-rt-9.x/src/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin
测试当前环境变量 看看有没有之前那个export进去的路径
echo $PATH或者env
切换到目录/mnt/asuswrt/release/src-rt-9.x/src
编译 make RT-AC1200G+
过程中会报错,cc1: error while loading shared libraries: libelf.so.1: cannot open shared object file: No such file or directory
解决办法
是因为缺少32位的libelf.so.1导致。 使用sudo apt-get install libelf1:i386
Reading package lists… Done
Building dependency tree
Reading state information… Done
E: Unable to locate package libelf1:i386 结果软件仓库没有这样的安装文件。 https://ubuntu.pkgs.org/18.04/ubuntu-main-i386/libelf1_0.170-0.4_i386.deb.html 将libelf.so.1,libelf-0.170.so放入/usr/lib32,权限777即可。 ################################################## 基本编译就说到这里,AC1200G和AC9都是spi闪存,所以需要将固件支持的闪存适配为nand,如何做呢,也很简单。 /mnt/asuswrt/release/src-rt-9.x/src目录下有个target.mak文件,它控制着编译的参数。可以通过修改它来实现固件功能参数的调整。 可以看到AC1200G和AC1200G+都是引用RT-AC1200G_BASE的配置参数,所以我们可以在后面增加或者删减功能模块即可。 我们怎么知道nand闪存需要哪些模块呢,也简单,找个NAND闪存的机器看下参数就知道了,比如我选择RT-AC3200,看下它的配置,发现BRCM_NAND_JFFS2=y JFFS2=n是nand闪存需要的。 于是在AC1200G+后面增加BRCM_NAND_JFFS2=y JFFS2=n保存编译即可。
大概思路就是这样了,抛砖引玉吧。最近比较忙,月底还有个资格考试,要抓紧看书,路由就先不折腾了。毕竟work must come first
|