在基于ARM(armv5tel)的Linux编译安装rtorrent 0.9.6

在NAS(armv5tel)上运行rtorrent 0.9.6

我平时使用的网络文件存储设备是个服役好几年的 Buffalo Linkstation Live。该系统上安装、配置了 Optware。可惜Optware 软件仓库里只提供 rtorrent v0.8.1。这个版本并不支持TLSv1.2,所以无法连接强制使用 TLS v1.2 的HTTPS 服务器。这个帖子介绍如何在上述系统上编译、安装 rtorrent 0.9.6 的大概步骤。编译后的 rtorrent 0.9.6 将支持 TLS v1.2。

前言

这个帖子介绍了如何在NAS上编译、安装rtorrent 0.9.6的大致步骤。假设该系统已经有软件编译工具。

具体来说,我们需要编译如下一些软件包

rtorrent支持其它工具通过XML-RPC协议与之通讯。由于我用不到相应的功能,所以我在编译rtorrent的时候没有包含和XML-RPC相关的代码。

编译步骤

在下面的编译示例中,软件的安装路径都在/opt/local下面的各个子目录中。

automake

libz

进入zlib-1.2.11.tar.gz所在的子目录

OpenSSL

进入openssl-1.1.0g.tar.gz所在的子目录

注意:安装路径的根目录是/opt/local/ssl。同时需要在配置时加上“enable-egd”,要不然,编译curl时会报错。

curl

进入curl-7.59.0.tar.gz所在的目录

libtorrent

进入libtorrent-0.13.6.tar.gz所在的目录

这一步会遇到一些麻烦。编译安装时会出现类似于下面所示的错误

主要原因是所用的编译器gcc 4.2.3版本太旧,而libtorrent代码中用到了一些和原子操作有关的gcc内部函数,只有在gcc 4.3及以后版本中才有。一般来说有两种解决办法:一是换用较新版本的gcc,这需要编译安装另一版本的gcc;再一个解决办法就是找到新版gcc中关于原子操作函数的代码,这需要找到一个文件(linux-atomic.c),编译后使用。在这里这里能获得更多详情。

另外,我们其实可以在编译libtorrent时通过使用“-disable-instrumentation”配置选项来避免编译使用到有问题函数的代码。根据我自己的测试,这样虽然能够编译安装libtorrent,但接下来在编译rtorrent仍然会出错。所以我还是采用了上面提到的第二种方案,也就是,使用linux-atomic.c。

接下来,我们切换到另外一个工作目录,比如~/downloads/linux-atomic

切换回libtorrent-0.13.6目录,在我们开始编译之前,我们需要再做一件事,那就是修改两个源文件,这也是我测试出错后才知道的。需要修改的文件分别是src/utils/instrumentation.h和src/utils/instrumentation.cc。具体需要修改的是:把所有的int64_t换成int32_t,再把所有的PRIi64换成PRIi32。做完这些改动之后,回到libtorrent-3.6/mybuild。如果之前运行过configure命令,记得首先运行“make distclean”,然后才执行如下命令

rtorrent

终于要编译rtorrent主程序了。不过在正式操作之前,首先确保系统上有ncurses的头文件。如果是用Optware,我们需要安装”ncurses-dev”以及”ncursesw-dev”两个包(使用ipkg install命令)

进入rtorrent-0.9.6.tar.gz所在的目录

搞定! 执行/opt/local/bin/rtorrent,或者把/opt/local/bin加入$PATH,就能启动刚刚编译好的rtorrent 0.9.6。这样编译的rtorrent可以连接强制TLSv1.2的HTTPS服务器。请注意rtorrent 0.9.x的配置文件和旧版0.8.x的不兼容,关于rtorrent 0.9.6的配置以及命令等相关信息,请参考rtorrent wiki网页。

下载

在NAS上编译以上软件包非常耗时。所以我把我的NAS上的/opt/local打包后供有需要的朋友试用。打包后的文件可在本站下载。如果硬件兼容,这些编译好的可执行文件极有可能可以直接运行。

发表评论

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