研究了半天官方wiki上的文档,最后却找到这个一键脚本。手动试了一下,丝般顺滑,成功编译出RT-AC88U的梅林固件384.15版本。也可以编译其他路由器型号的固件。

不过这个脚本比较暴力,上来就把/bin/sh给干掉了,适合在做好vmware快照的情况下运行,或者在docker中使用,或者自己改一下把删除/bin/sh的代码去掉。
另外,去掉尾部与自己的路由器型号无关的脚本。

  1. ### Install fresh Ubuntu 18.04 LTS (Bionic Beaver)
  2. ubuntu-18.04.-desktop-amd64.iso
  3.  
  4. ### Apply OS updates and make bash the default shell (reboot required)
  5. sudo apt-get update && sudo apt-get -y dist-upgrade && sudo rm -f /bin/sh && sudo ln -sf bash /bin/sh && sudo reboot
  6.  
  7. ### Install Linux kernel headers and essential development tools
  8. sudo apt-get update && sudo apt-get -y install git build-essential linux-headers-$(uname -r)
  9.  
  10. ### Install dependencies for AsusWRT
  11. sudo dpkg --add-architecture i386 && sudo apt-get update && sudo apt-get -y install libtool-bin cmake libproxy-dev uuid-dev liblzo2-dev autoconf automake bash bison bzip2 diffutils file flex m4 g++ gawk groff-base libncurses5-dev libtool libslang2 make patch perl pkg-config shtool subversion tar texinfo zlib1g zlib1g-dev git gettext libexpat1-dev libssl-dev cvs gperf unzip python libxml-parser-perl gcc-multilib gconf-editor libxml2-dev g++-multilib gitk libncurses5 mtd-utils libncurses5-dev libvorbis-dev git autopoint autogen sed build-essential intltool libelf1 libglib2.-dev xutils-dev lib32z1-dev lib32stdc++ xsltproc gtk-doc-tools libelf-dev:i386 libelf1:i386 libltdl-dev
  12.  
  13. ### Install other programs
  14. sudo apt-get -y install lzip patchelf
  15.  
  16. ### Clone the toolchains
  17. cd
  18. if [ ! -d am-toolchains ]; then
  19. git clone https://github.com/RMerl/am-toolchains
  20. fi
  21.  
  22. ### Fix the toolchain symlinks
  23. sudo mkdir -p /opt ; sudo rm -rf /opt/toolchains ; sudo ln -s ~/am-toolchains/brcm-arm-hnd /opt/toolchains ; sudo rm -f /opt/brcm-arm ; sudo ln -s ~/am-toolchains/brcm-arm-sdk/hndtools-arm-linux-2.6.-uclibc-4.5. /opt/brcm-arm ; sudo rm -f /opt/brcm ; sudo ln -s ~/am-toolchains/brcm-mips-sdk/tools/brcm /opt/brcm
  24.  
  25. ### Clone the repo
  26. cd
  27. if [ ! -d asuswrt-merlin.ng ]; then
  28. git clone https://github.com/RMerl/asuswrt-merlin.ng
  29. cd asuswrt-merlin.ng
  30. # git checkout master
  31. git checkout mainline
  32. else
  33. cd asuswrt-merlin.ng
  34. # git checkout master
  35. git checkout mainline
  36. git pull
  37. fi
  38.  
  39. ### Create a build tree from the repo and fix the symlinks
  40. cd
  41. rm -rf asuswrt-merlin.ng-build
  42. #rsync -aq asuswrt-merlin.ng/ asuswrt-merlin.ng-build --exclude .git
  43. cp -a asuswrt-merlin.ng/ asuswrt-merlin.ng-build
  44.  
  45. # fix symlinks for HND toolchain
  46. rm -rf ~/asuswrt-merlin.ng-build/release/src-rt-.02hnd/bcmdrivers/broadcom/net/wl/impl51/main/src/toolchains
  47. ln -s ~/am-toolchains/brcm-arm-hnd ~/asuswrt-merlin.ng-build/release/src-rt-.02hnd/bcmdrivers/broadcom/net/wl/impl51/main/src/toolchains
  48.  
  49. # fix symlinks for ARM toolchain
  50. rm -rf ~/asuswrt-merlin.ng-build/release/src-rt-.x./toolchains
  51. ln -s ~/am-toolchains/brcm-arm-sdk ~/asuswrt-merlin.ng-build/release/src-rt-.x./toolchains
  52.  
  53. ### Build RT-AC86U firmware (HND)
  54. export LD_LIBRARY_PATH=/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/lib
  55. export TOOLCHAIN_BASE=/opt/toolchains
  56. echo $PATH | grep -qF /opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin || export PATH=$PATH:/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin
  57. echo $PATH | grep -qF /opt/toolchains/crosstools-aarch64-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin || export PATH=$PATH:/opt/toolchains/crosstools-aarch64-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin
  58. cd ~/asuswrt-merlin.ng-build/release/src-rt-.02hnd
  59. make rt-ac86u
  60.  
  61. ### Build RT-AC56U firmware (ARM)
  62. export LD_LIBRARY_PATH=
  63. export TOOLCHAIN_BASE=
  64. echo $PATH | grep -qF /opt/brcm-arm/bin || export PATH=$PATH:/opt/brcm-arm/bin
  65. echo $PATH | grep -qF /opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin || export PATH=$PATH:/opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin
  66. cd ~/asuswrt-merlin.ng-build/release/src-rt-.x.
  67. make rt-ac56u
  68.  
  69. ### Build RT-AC68U firmware (ARM)
  70. export LD_LIBRARY_PATH=
  71. export TOOLCHAIN_BASE=
  72. echo $PATH | grep -qF /opt/brcm-arm/bin || export PATH=$PATH:/opt/brcm-arm/bin
  73. echo $PATH | grep -qF /opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin || export PATH=$PATH:/opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin
  74. cd ~/asuswrt-merlin.ng-build/release/src-rt-.x.
  75. make rt-ac68u
  76.  
  77. ### Build RT-AC87U firmware (ARM)
  78. export LD_LIBRARY_PATH=
  79. export TOOLCHAIN_BASE=
  80. echo $PATH | grep -qF /opt/brcm-arm/bin || export PATH=$PATH:/opt/brcm-arm/bin
  81. echo $PATH | grep -qF /opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin || export PATH=$PATH:/opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin
  82. cd ~/asuswrt-merlin.ng-build/release/src-rt-.x.
  83. make rt-ac87u
  84.  
  85. ### Build RT-AC88U firmware (ARM)
  86. export LD_LIBRARY_PATH=
  87. export TOOLCHAIN_BASE=
  88. echo $PATH | grep -qF /opt/brcm-arm/bin || export PATH=$PATH:/opt/brcm-arm/bin
  89. echo $PATH | grep -qF /opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin || export PATH=$PATH:/opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin
  90. cd ~/asuswrt-merlin.ng-build/release/src-rt-7.14..x/src
  91. make rt-ac88u
  92.  
  93. ### Build RT-AC3100 firmware (ARM)
  94. export LD_LIBRARY_PATH=
  95. export TOOLCHAIN_BASE=
  96. echo $PATH | grep -qF /opt/brcm-arm/bin || export PATH=$PATH:/opt/brcm-arm/bin
  97. echo $PATH | grep -qF /opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin || export PATH=$PATH:/opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin
  98. cd ~/asuswrt-merlin.ng-build/release/src-rt-7.14..x/src
  99. make rt-ac3100
  100.  
  101. ### Build RT-AC5300 firmware (ARM)
  102. export LD_LIBRARY_PATH=
  103. export TOOLCHAIN_BASE=
  104. echo $PATH | grep -qF /opt/brcm-arm/bin || export PATH=$PATH:/opt/brcm-arm/bin
  105. echo $PATH | grep -qF /opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin || export PATH=$PATH:/opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin
  106. cd ~/asuswrt-merlin.ng-build/release/src-rt-7.14..x/src
  107. make rt-ac5300
  108.  
  109. ### Build RT-AC3200 firmware (ARM)
  110. export LD_LIBRARY_PATH=
  111. export TOOLCHAIN_BASE=
  112. echo $PATH | grep -qF /opt/brcm-arm/bin || export PATH=$PATH:/opt/brcm-arm/bin
  113. echo $PATH | grep -qF /opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin || export PATH=$PATH:/opt/brcm-arm/arm-brcm-linux-uclibcgnueabi/bin
  114. cd ~/asuswrt-merlin.ng-build/release/src-rt-.x.main/src
  115. make rt-ac3200

脚本来源:https://www.snbforums.com/threads/merlinwrt-compile-instructions.47984/page-3

Ubuntu 18.04上交叉编译华硕路由器RT-AC88U的梅林384.15版本的更多相关文章

  1. 如何在Ubuntu 18.04上安装Pip

    一.简介: Pip是一个软件包管理系统,它简化了用Python编写的软件包(如Python包索引(PyPI)中的软件包)的安装和管理. 在Ubuntu 18.04上缺省没有安装Pip,但安装非常简单. ...

  2. 转载:如何在Ubuntu 18.04上使用UFW设置防火墙

    https://blog.csdn.net/u013068789/article/details/82051943 介绍 UFW或Uncomplicated Firewall是iptables一个接口 ...

  3. 如何在Ubuntu 18.04上安装Django

    Django是一个免费的开源高级Python Web框架,旨在帮助开发人员构建安全,可扩展和可维护的Web应用程序. 根据您的需要,有不同的方法来安装Django.它可以使用pip在系统范围内安装或在 ...

  4. 如何在Ubuntu 18.04上安装和配置Apache 2 Web服务器(转)

    如何在Ubuntu 18.04上安装和配置Apache 2 Web服务器 什么是Apache Web Server? Apache或Apache HTTP服务器是一个免费的开源Web服务器,由Apac ...

  5. 在Ubuntu 18.04上安装Tensorflow

    我们将经历几个阶段,安装cuda-9.0,cudnn和tensorflow cpu以及tensorflow gpu版本.最后我们将用cuda-9.0安装pytorch.在MARVEl电影中黑寡妇的“我 ...

  6. 如何在Ubuntu 18.04上安装Go

    如何在Ubuntu 18.04上安装Go 谢鸢发表于云计算教程系列订阅98 介绍 课程准备 第1步 - 安装Go 第2步 - 设置Go路径 第3步 - 测试您的安装 结论 介绍 Go是Google开发 ...

  7. Ubuntu 18.04上安装 phpMyAdmin

    我们将安装 phpMyAdmin 在 Ubuntu18.04 上配合 Apache 一起工作. 在安装 phpMyAdmin 之前需要已经安装了LAMP栈并提供了web页面. 如果没有安装可以参照 U ...

  8. Ubuntu 18.04上安装Apache, MySQL, PHP, LAMP

    1.安装 Apache $ sudo apt update && sudo apt install apache2 中间会遇到停顿询问是否继续, 输入 y 然后 回车. 2.测试 Ap ...

  9. 在Ubuntu 18.04上安装OpenCV 4(C ++和Python)

    OpenCV于11月20日发布了OpenCV-3.4.4和OpenCV-4.0.0.这些版本中有很多错误修复和其他更改.发布重点如下: OpenCV现在是C ++ 11库,需要符合C ++ 11标准的 ...

随机推荐

  1. 三、通过Vue基础属性做一个Table的增加、删除、姓名音位吗查询

    html头文件包括css,和vue.js的文件的引用 <!DOCTYPE html> <html lang="en"> <head> <m ...

  2. python自动化测试开发利器ulipad最佳实践(可写python测试代码也可编写selenium、Appium等)...

    介绍 UliPad是一个国人开发的python轻量级编辑器,导向和灵活的编程器.它如类浏览器,代码自动完成许多功能,如:HTML查看器,目录浏览器,向导等. 下载与安装 下载地址:https://py ...

  3. 项目Alpha冲刺 Day12

    1)站立式会议: 2)今日安排: 项目演示. 3)项目情况 项目进展:系统已实现预期的所有的功能.问题困难:系统测试不够全面,主要做功能测试,对于非功能测试,如压力测试.效能测试.安全性等并未测试.心 ...

  4. 精确计算微信小程序scrollview高度,全机型适配

    众所周知,可以滑动的 scroll 组件在移动端非常的重要,几乎每个页面都要用到. 而小程序的 scroll-view 组件就比较坑了,非得指定一个高度才能正常使用.布局复杂的时候谁还给你算高度啊.. ...

  5. Everything 本地磁盘文件搜索工具下载!

    如何运用布尔算子? AND(且)是缺省使用的布尔算子. 例如:如果要搜索 foo 和 bar 同时出现的文件:foo bar 如果从两者之中任一个都可以,则用 | 介于两者之间. 例如:如果要搜索.j ...

  6. 数学--数论--Alice and Bob (CodeForces - 346A )推导

    It is so boring in the summer holiday, isn't it? So Alice and Bob have invented a new game to play. ...

  7. 关于SPFA Bellman-Ford Dijkstra Floyd BFS最短路的共同点与区别

    关于模板什么的还有算法的具体介绍 戳我 这里我们只做所有最短路的具体分析. 那么同是求解最短路,这些算法到底有什么区别和联系: 对于BFS来说,他没有松弛操作,他的理论思想是从每一点做树形便利,那么时 ...

  8. FileStream提示文件正在由另一进程使用的解决方法

    文件正在由另一进程使用…… FileStream fs = new FileStream(strFilePath, FileMode.Open,FileAccess.Read,FileShare.Re ...

  9. 前端之HTML1

    直接上代码: <!DOCTYPE html> <html> <body bgcolor="green"> <h1 align=" ...

  10. Spring官网阅读(十六)Spring中的数据绑定

    文章目录 DataBinder UML类图 使用示例 源码分析 bind方法 doBind方法 applyPropertyValues方法 获取一个属性访问器 通过属性访问器直接set属性值 1.se ...