交叉编译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 ..

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

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

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

交叉编译Aria2 for Windows》有7个想法

  1. 打扰了,第一次编译成功了,但是之后就再没成功过,好像是有些依赖没安装成功,请麻烦帮我看看。截图:https://i.imgur.com/hHyTTWi.png

    1. 你编译的环境是Ubuntu 17吗?
      我记得我刚开始搞这个也出现过类似状况,建议重装大法,严格按照我写的流程操作,编译时路径不要搞错了。

      1. 知道问题出在哪了,我在第一次运行完整脚本之后,就想当然的认为往后的编译就无需再安装编译环境和依赖库了,所以就只运行了第二步的git clone命令和脚本的最后一行命令,经过几次的实验发现,完整运行脚本编译成功,而像我先前的做法则会失败,应该是每次编译都需要安装编译环境和依赖库…脚本中有个小错误,最后一行命令之前还要加一行”cd ..”,因为需要退出之前的libssh2-1.8.0文件夹。

Hadwin进行回复 取消回复

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