交叉编译Aria2 for Windows

由于Aria2的最大线程数被硬编码在代码中,最多为16个线程。这样显然不能充分发挥多线程的优势。好在这是个开源的软件,我们可以修改源码后自行编译出无限制的客户端,从而提升下载速度。

测试环境: Ubuntu 17

apt-get update && apt-get install git
git clone https://github.com/aria2/aria2

在aria2/src/OptionHandlerFactory.cc中搜索TEXT_MAX_CONNECTION_PER_SERVER,将后边的16修改为2048。

回到aria2的上级目录,运行此脚本。

#! /bin/bash

# 改成 i686-w64-mingw32 来编译32位版本
export HOST=x86_64-w64-mingw32

# 安装编译环境
apt-get install -y make binutils autoconf automake autotools-dev libtool pkg-config curl dpkg-dev gcc-mingw-w64 autopoint libcppunit-dev libxml2-dev libgcrypt11-dev lzip

# 下载依赖库
curl -L -O https://gmplib.org/download/gmp/gmp-6.1.2.tar.lz
curl -L -O https://github.com/libexpat/libexpat/releases/download/R_2_2_5/expat-2.2.5.tar.bz2
curl -L -O https://www.sqlite.org/2017/sqlite-autoconf-3210000.tar.gz
curl -L -O http://zlib.net/zlib-1.2.11.tar.gz
curl -L -O https://c-ares.haxx.se/download/c-ares-1.13.0.tar.gz
curl -L -O https://www.libssh2.org/download/libssh2-1.8.0.tar.gz

tar xf gmp-6.1.2.tar.lz && \
cd gmp-6.1.2 && \
./configure \
--disable-shared \
--enable-static \
--prefix=/usr/local/$HOST \
--host=$HOST \
--disable-cxx \
--enable-fat \
CFLAGS="-mtune=generic -O2 -g0" && \
make install

cd ..
tar xf expat-2.2.5.tar.bz2 && \
cd expat-2.2.5 && \
./configure \
--disable-shared \
--enable-static \
--prefix=/usr/local/$HOST \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
make install

cd ..
tar xf sqlite-autoconf-3210000.tar.gz && \
cd sqlite-autoconf-3210000 && \
./configure \
--disable-shared \
--enable-static \
--prefix=/usr/local/$HOST \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` && \
make install

cd ..
tar xf zlib-1.2.11.tar.gz && \
cd zlib-1.2.11 && \
CC=$HOST-gcc \
AR=$HOST-ar \
LD=$HOST-ld \
RANLIB=$HOST-ranlib \
STRIP=$HOST-strip \
./configure \
--prefix=/usr/local/$HOST \
--libdir=/usr/local/$HOST/lib \
--includedir=/usr/local/$HOST/include \
--static && \
make install

cd ..
tar xf c-ares-1.13.0.tar.gz && \
cd c-ares-1.13.0 && \
./configure \
--disable-shared \
--enable-static \
--without-random \
--prefix=/usr/local/$HOST \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
LIBS="-lws2_32" && \
make install

cd ..
tar xf libssh2-1.8.0.tar.gz && \
cd libssh2-1.8.0 && \
./configure \
--disable-shared \
--enable-static \
--prefix=/usr/local/$HOST \
--host=$HOST \
--build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
--without-openssl \
--with-wincng \
LIBS="-lws2_32" && \
make install

cd aria2 && autoreconf -i && ./mingw-config && make install && $HOST-strip src/aria2c.exe

编译好后用WinSCP连接VPS,将aria2c.exe取回本地就可以用了。

这是我在英国挂上回国代理后的速度,使用原版的速度才500K/s。

发表评论

电子邮件地址不会被公开。 必填项已用*标注