一直以来都用BT、磁力下载各种资源,对磁力和DHT网络协议非常好奇,特别想要学习一下,并尝试看看能不能用这些协议做一个点对点的聊天软件。
所以去查找支持这些协议的开源下载项目来研究,发现aria2这个开源项目非常主流,并且很多厂商都选它做下载内核,从而决定下载aria2源码编译、调试、学习。
由于日常电脑都用windows系统,所以就想在windows上完成本地编译和调试,为了调试方便决定搭建eclipse环境进行本地程序的可视化调试。
开干。。。
1、下载aria2源码
aria2的github地址是https://github.com/aria2/aria2,我下载的是目前最新版本1.36.0。
生成配置脚本
下载代码后,详细阅读Readme,查看How to build章节,aria2使用autoconfig进行配置,命令如下
由于完全在windows环境,所以无法执行autoconfig过程,然后往官方文档下面查看,有Cross-compiling Windows binary章节,发现aria2在windows上使用mingw-w64编译,还特意强调MinGW版本不支持。
所以需要先安装mingw-w64工具链。
2、安装编译工具链
在mingw-w64官网https://www.mingw-w64.org/downloads/下载,但是有很多的发行版,按以往的经验选择MSYS2发行版https://www.msys2.org/。
按照首页的安装说明进行下载
执行安装程序,选择合适的安装路径,默认安装即可
安装后按照说明执行软件包更新的命令
pacman -Syu
反复执行,出现所有软件包都完成更新即可
编译使用gcc,所以安装mingw-w64版本的gcc工具链,命令如下
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
安装完成后,再执行安装命令,显示如下
此时工具链安装完成。
3、官方命令行编译(静态库版本)
启动MSYS2 MinGW x86环境进行命令行编译
生成配置脚本
按github的Readme说明,首先执行生成配置的命令(时间较长,需耐心等待)
autoreconf -i
执行成功后,即可生成配置脚本configure和其他一些必要文件
生成Makefile
按照官方说明在windows上生成Makefile,需要执行mingw-config脚本
但是执行mingw-config脚本官方描述说需要如下库的支持
所以先要安装上述库的依赖到MSYS2中,并且版本均为mingw-w64-x86_64前缀,所有的依赖库安装命令均在https://packages.msys2.org/queue网站查找
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和其他必要文件
编译(静态库)
*此版本生成的src文件夹下的Makefile有个bug,会导致g++连接时会报cares库中的某些依赖函数无法找到的错误,所以需要调整此Makefile的连接库顺序,将“-L/mingw64/lib -lcares \”移动到第一个即可。
修改后即可执行make命令编译(时间非常长,需耐心等待)
make V=1 > make-my.log
编译成功后,即可在src目录下,生成aria2c.exe文件
验证编译成果物
cmd进入到src目录,执行验证命令
aria2c.exe https://speedxbu.baidu.com/shurufa/ime/setup/BaiduPinyinSetup_5.8.4.8.exe
执行成功后,百度输入安装包被成功下载
至此aria2的静态库版本编译和验证成功。
先写到这,过几天再完成如下后续两个章节的文章。。。
等待《windows下编译aria2,并搭建eclipse编译调试环境(二)》更新https://blog.csdn.net/xiaoNature/article/details/124772639
4、官方命令行编译(动态库版本)
5、搭建eclipse环境编译及调试