天涼好個秋.

使用 OpenWrt SDK 编译 Aria2 最新版本

3035 阅 0 评 IT手札

Aria2Gee 插件的 Aria2 版本是1.18,而 Aria2 的最新版本已经到了 1.31.0 。而很多朋友反馈给我希望更新 Aria2 的版本,折腾了一整天搞定,所以才有了这篇手札。

过程

  1. 需要一台运行 Linux 的计算机,本次使用的是 ubuntu 16.04 LTS.
  2. 获取 OpenWrt SDK

    官方地址
    使用最新的 branch (Chaos Calmer)

    git clone git://git.openwrt.org/15.05/openwrt.git

  3. 安装依赖
    sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
  4. 更新与安装feeds
    cd openwrt
    ./scripts/feeds update -a
    ./scripts/feeds install -a
  5. 修改 Aria2 的 Makefile

文件位于 SDK 目录下 feeds/packages/net/aria2/Makefile
修改三个地方:

A. 版本号。这个按照 github 上的最新版本号修改,当前最新版本为1.31.0。
B. 更新的 URL 修改为 ```https://github.com/aria2/aria2/releases/download/release-$(PKG_VERSION)/```
C. PKG_MD5SUM。这里在最前面加 ```#```

修改后如下图:

  1. 定制固件

    A. 开始定制

    make menuconfig

    因为编译极路由软件所以红框的部分选择 MT7620 based boards和 MT 7620a EVB。如下图。

    B. 选择编译 Aria2。
    向下找到Network-->File Transfer-->aria2,按空格键选中,选项变为 <M> 。如下图


    C. 默认配置不支持BT和磁力链,需要配置一下。
    选择aria2下面的 Aria2 configuration,把里面的Enable bittorent support和Enable metalink support用空格键选中。如下图

    D. 保存设置。
    一直按 ESC 键,知道下图界面。选择 Yes 敲回车即可。

  2. 编译

    编译开始前,需要修改 openwrt/include/download.mk文件的第八行,将 http 修改为 git 。


    编译过程中需要保持联网,并保持网络处于全局翻墙状态。执行

    make -j4 V=99

    开始编译,-j4 代表使用几个线程来编译,视自己电脑配置酌情修改。

  3. 编译完成

    如果顺利解决了所有编译遇到的错误,编译后的程序位于 bin/ramips/packages/packages

  4. 当 Aria2 更新了,重新编译

    A. 清理旧的编译版本
    make package/feeds/packages/aria2/clean V=99
    B. 修改 MakeFile
    修改文件 feeds/packages/net/aria2/Makefile中的PKG_VERSION修改为最新的版本号,如:PKG_VERSION:=1.32.0
    C. 重新编译
    make package/feeds/packages/aria2/install V=99

一些坑

  1. 编译过程中如果出现错误,请将线程数设定为 1 ,重新编译以便定位错误。
  2. 大部分错误都与网络有关,请细心排查是否需要的程序均下载完整。
  3. 新版本的 Aria2 需要 C++ 11 新特性支持,编译器需要 gcc-4.8 ,所以旧版本的 OpenWrt 的编译器会编译出错。
  4. 这个你可能需要 hostapd-2015-03-25.tar.bz2,下载之后复制到 dl目录下。
EOF