一直以来都用BT、磁力下载各种资源,对磁力和DHT网络协议非常好奇,特别想要学习一下,并尝试看看能不能用这些协议做一个点对点的聊天软件。

所以去查找支持这些协议的开源下载项目来研究,发现aria2这个开源项目非常主流,并且很多厂商都选它做下载内核,从而决定下载aria2源码编译、调试、学习。

由于日常电脑都用windows系统,所以就想在windows上完成本地编译和调试,为了调试方便决定搭建eclipse环境进行本地程序的可视化调试。

开干。。。

1、下载aria2源码

生成配置脚本

2、安装编译工具链

3、官方命令行编译(静态库版本)

生成配置脚本

生成Makefile

编译(静态库)

验证编译成果物

4、官方命令行编译(动态库版本)

5、搭建eclipse环境编译及调试


1、下载aria2源码

        aria2的github地址是https://github.com/aria2/aria2,我下载的是目前最新版本1.36.0。

arango 重新编译构建镜像 编译aria2_windows

生成配置脚本

下载代码后,详细阅读Readme,查看How to build章节,aria2使用autoconfig进行配置,命令如下

arango 重新编译构建镜像 编译aria2_p2p_02

由于完全在windows环境,所以无法执行autoconfig过程,然后往官方文档下面查看,有Cross-compiling Windows binary章节,发现aria2在windows上使用mingw-w64编译,还特意强调MinGW版本不支持。

arango 重新编译构建镜像 编译aria2_windows_03

所以需要先安装mingw-w64工具链。

2、安装编译工具链

在mingw-w64官网https://www.mingw-w64.org/downloads/下载,但是有很多的发行版,按以往的经验选择MSYS2发行版https://www.msys2.org/

arango 重新编译构建镜像 编译aria2_arango 重新编译构建镜像_04

 按照首页的安装说明进行下载

arango 重新编译构建镜像 编译aria2_eclipse_05

 执行安装程序,选择合适的安装路径,默认安装即可

arango 重新编译构建镜像 编译aria2_eclipse_06

安装后按照说明执行软件包更新的命令

pacman -Syu

反复执行,出现所有软件包都完成更新即可

arango 重新编译构建镜像 编译aria2_arango 重新编译构建镜像_07

 编译使用gcc,所以安装mingw-w64版本的gcc工具链,命令如下

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

安装完成后,再执行安装命令,显示如下

arango 重新编译构建镜像 编译aria2_windows_08

 此时工具链安装完成。

3、官方命令行编译(静态库版本)

启动MSYS2 MinGW x86环境进行命令行编译

arango 重新编译构建镜像 编译aria2_arango 重新编译构建镜像_09

生成配置脚本

按github的Readme说明,首先执行生成配置的命令(时间较长,需耐心等待)

autoreconf -i

执行成功后,即可生成配置脚本configure和其他一些必要文件

arango 重新编译构建镜像 编译aria2_网络协议_10

生成Makefile

按照官方说明在windows上生成Makefile,需要执行mingw-config脚本

arango 重新编译构建镜像 编译aria2_windows_11

但是执行mingw-config脚本官方描述说需要如下库的支持

arango 重新编译构建镜像 编译aria2_eclipse_12

所以先要安装上述库的依赖到MSYS2中,并且版本均为mingw-w64-x86_64前缀,所有的依赖库安装命令均在https://packages.msys2.org/queue网站查找

arango 重新编译构建镜像 编译aria2_windows_13

pacman -S mingw-w64-x86_64-c-ares
pacman -S mingw-w64-x86_64-expat
pacman -S mingw-w64-x86_64-sqlite3
pacman -S mingw-w64-x86_64-zlib
pacman -S mingw-w64-x86_64-libssh2
pacman -S mingw-w64-x86_64-cppunit

 全部安装成功后,即可执行生成Makefile的命令(时间很长,需耐心等待)

HOST=x86_64-w64-mingw32 PREFIX=/mingw64 ./mingw-config > config-my.log

执行成功后,即可生成Makefile和其他必要文件

arango 重新编译构建镜像 编译aria2_p2p_14

编译(静态库)

 *此版本生成的src文件夹下的Makefile有个bug,会导致g++连接时会报cares库中的某些依赖函数无法找到的错误,所以需要调整此Makefile的连接库顺序,将“-L/mingw64/lib -lcares  \”移动到第一个即可。

arango 重新编译构建镜像 编译aria2_arango 重新编译构建镜像_15

 修改后即可执行make命令编译(时间非常长,需耐心等待)

make V=1 > make-my.log

编译成功后,即可在src目录下,生成aria2c.exe文件

 

arango 重新编译构建镜像 编译aria2_eclipse_16

验证编译成果物

cmd进入到src目录,执行验证命令

aria2c.exe https://speedxbu.baidu.com/shurufa/ime/setup/BaiduPinyinSetup_5.8.4.8.exe

arango 重新编译构建镜像 编译aria2_windows_17

 执行成功后,百度输入安装包被成功下载

arango 重新编译构建镜像 编译aria2_p2p_18

至此aria2的静态库版本编译和验证成功。

先写到这,过几天再完成如下后续两个章节的文章。。。

等待《windows下编译aria2,并搭建eclipse编译调试环境(二)》更新

arango 重新编译构建镜像 编译aria2_windows_19

4、官方命令行编译(动态库版本)

arango 重新编译构建镜像 编译aria2_p2p_20

5、搭建eclipse环境编译及调试

arango 重新编译构建镜像 编译aria2_网络协议_21

    

arango 重新编译构建镜像 编译aria2_eclipse_22

    

arango 重新编译构建镜像 编译aria2_eclipse_23