到處搜了下,知識都很零散和碎片,這里做下整理。
想要編譯aria2要先編譯openwrt。編譯平臺是debian8。
1.獲取openwrt的代碼
從openwrt拿到官方代碼,見官方頁面https://dev.openwrt.org/wiki/GetSource
想要最新的就拉trunk的代碼,我之前路由刷的是15.05分支的,創建一個文件夾,拿這個分支的代碼:
mkdir openwrt
cd openwrt
git clone git://git.openwrt.org/15.05/openwrt.git
2.安裝編譯需要的依賴
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
3.進入源碼文件夾,更新軟件包
./scripts/feeds update -a
4.安裝一下
./scripts/feeds install -a
5.定制固件
make menuconfig
選擇平臺,Target System我這里選Broadcom BCM63XX。
選擇路由器型號,Target Profile我這里選華為HG556a C版。
默認是不編譯aria2的,這里我們要讓它編譯aria2。
向下翻找到Network-->File Transfer-->aria2,按空格鍵選中。
默認配置不支持BT和磁力鏈,我們要配置一下,讓我們編譯出來的支持這2種下載方式。
選擇aria2下面的Aria2 configuration,把里面的Enable bittorent support和Enable metalink support用空格鍵選中。
好,現在用方向鍵選Exit一路退出,最后退出時選YES保存一下
6.開始編譯
make -j4 V=99
j后面的數字代表用幾個線程來編譯。
7.編譯中遇到的坑
①因為在編譯中需要聯網下載一些包下來,所以編譯的時候一定要聯網。
②有的包聯網了還不行,還要翻墻才能下載。
③有的包的下載地址用的http開頭的無法下載,可以修改openwrt/include/download.mk文件,將第8行的http換成git
④第一遍編譯時最好用make -j1 V=99來編譯,即用一個線程來編譯,以便編譯出錯時好定位哪里有問題。
8.編譯完成
編譯完成后在openwrt/bin/brcm63xx/packages/packages文件夾就會有一個aria2的ipk文件了。但是,這個版本是15.05自帶的版本,我們需要最新的版本,所以接下來我們就要重新編譯一下aria2.
9.下載最新的aria2代碼
打開aria2的github項目,在Releases里面下載最新的代碼,現在最新的是1.22.0
https://github.com/aria2/aria2/releases
我們選擇下載aria2-1.22.0.tar.bz2這個版本
10.替換aria2的代碼
將剛才下載的壓縮包(不要解壓)復制到openwrt/dl目錄下,刪掉原來的aria2 1.18的壓縮包。
修改openwrt/feeds/packages/net/aria2/Makefile文件
將第10行的版本號修改為1.22.0
將第15行的MD5校驗注釋掉(前面加#號)
11.重新編譯
好,現在可以重新編譯了
先清除掉原來的編譯結果
make package/feeds/packages/aria2/clean V=99
現在查看openwrt/bin/brcm63xx/packages/packages目錄,前面編譯的aria2 1.18版本已經被清除掉了。
重新編譯
make package/feeds/packages/aria2/install V=99
等待一段時間,編譯完成
再進到openwrt/bin/brcm63xx/packages/packages,已經可以華麗麗地看到aria2_1.22.0-1_brcm63xx.ipk出現在里面了。
大功告成。