交叉编译树莓派的 aria2c

aria2c 1.19.x 下载https链接始终有问题,所以最近想升级一下

惯例,下源码,编译,不过报错了。expected type-specifier before string constant

看到这里说是g++版本太低。自己懒,不太想折腾树莓派环境了,所以准备交叉编译一个。树莓派官方提供了交叉编译工具,所以很方便。

首先,随便创建一个文件夹,比如rpi

1
2
3
cd ~
mkdir rpi
cd rpi

之后,git clone交叉编译工具

1
git clone git://github.com/raspberrypi/tools.git

clone 之后可以通过pull更新tools

1
2
cd ~/rpi/tools
git pull origin

添加环境变量, 可以加在 .bashrc 中

1
2
3
4
# for 32 bit
export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
# for 64 bit
export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

更新环境变量

1
source ~/.bashrc

这样交叉编译环境就配置完成了。之后编译aria2c

首先下载最新的release源码,这里下载的是1.24版本的,然后解压

1
2
3
wget https://github.com/aria2/aria2/releases/download/release-1.24.0/aria2-1.24.0.tar.gz
tar zxvf aria2-1.24.0.tar.gz
cd aria2-1.24.0

之后进行configure,貌似libxml2有点问题(见这里),所以要加上--without-libxml2选项用Expat代替libxml2, host指编译之后是要运行在树莓派上的。

1
./configure --host=arm-linux-gnueabihf --without-libxml2

如果想要静态链接,则执行

1
./configure --host=arm-linux-gnueabihf --without-libxml2 ARIA2_STATIC=yes

configure之后make就可以了, 编译好的文件放在src/aria2c里。有点大(64mb),下载后放到树莓派中可以strip一下去除符号表以减少程序体积(缩小到了2.4mb)。

1
strip -s aria2c

之后就可以愉快地运行了。

aria2c的配置可以见这里

PS

发现树莓派的交叉编译链没有openssl,所以还需要自己找源码编译
具体过程可以见这个脚本