交叉编译ARM下的BT下载软件transmission和rtorrent
硬件环境:ARM板-友善之臂 mini2440
软件环境:买的时候光盘上带的Linux 2.6.13源码
主机编译环境: arm-linux-gcc 3.4.5,scrabox
过程:
1.
搭建编译环境,按照嵌入式Linux应用开发完全手册上(韦东山编著)讲的,一种是直接用arm-linux-gcc,设置环境变量,编译软件的时候需要
修改源代码中的makefile,或者如果源代码支持,可以指定--host=arm-linux,这种方法我在编译rtorrent的时候,总是遇到不
能找到对应的库等,搜索好久都没搞定,就放弃了,改用第二种方法,使用scratchbox,成功编译出了transmission和rtorrent.
2. 编译transmission:
需要源码包:curl-7.16.3.tar.bz2
openssl-0.9.8d.tar.gz
transmission-1.52.tar.bz2
openssl:
[sbox-arm: ~/transmission] > ./Configure --prefix=/usr shared --openssldir=/usr/openssl linux-generic32 -DL_ENDIAN
[sbox-arm: ~/transmission] > make
[sbox-arm: ~/transmission] > make install
curl:
[sbox-arm: ~/transmission] > ./configure --prefix=/usr
[sbox-arm: ~/transmission] > make
[sbox-arm: ~/transmission] > make install
transmission:
[sbox-arm: ~/transmission] > ./configure --prefix=/usr
[sbox-arm: ~/transmission] > make
[sbox-arm: ~/transmission] > make install
成功编译安装后,在/usr/bin下面就有了 transmission-daemon,transmission-remote,transmissioncli
/usr/share下面有transmission文件夹,里面放的是web控制页面相关信息,把这些文件拷贝到arm板上去.
再把curl和openssl生成的依赖库文件也拷贝进去,就可以运行了.
为了简单的知道curl和openssl生成了哪些库文件,可以在前面指定prefix的时候指定一个临时目录,然后make;make install的时候会安装到临时目录里面,就可以知道生成哪些库文件了.
3. 编译rtorrent.
过程类似,需要源码包 libsigc++-2.1.1.tar.bz2
ncurses.tar.gz (5.6版本就可以)
openssl-0.9.8d.tar.gz
libtorrent-0.12.4.tar.gz
rtorrent-0.8.4.tar.gz
编译类似,就是指定前缀--prefix=/usr就可以了,最后在编译rtorrent的时候,会出现一个segment错误的情况,要修改一下src/rpc/command.h文件。
参考这里:
就是:删除第76,77行
template
rt_triple(const std::pair& b) : base_type(b), third() {}
改成 rt_triple(const base_type& b) : base_type(b), third() {}
删除79行的 template
这个是0.8.2的行数,0.8.4行数稍微不同.
编译后会生成rtorrent应用程序.
4. 因为我一般是在windows下面放下载的高清电影的,所以还想让支持NTFS分区,网上查了下,一般用ntfs-3g.
源码包: fuse-2.7.4.tar.gz
ntfs-3g-2009.4.4.tgz
英文fuse编译的时候需要内核头文件的支持,所以我就没有在scratchbox里面编译,而改为在外面用交叉编译环境编译。
编译的时候指定 ./configure --host=arm-linux --enable-kernel-module --with-
kernel=/你的内核头文件所在地方
将生成的fuse.ko可以在arm上用insmod加载
然后用/usr/ntfs/bin/ntfs-3g /dev/sdc1 /mnt/ 挂载ntfs分区就可以了。
具体可以参考这里 http://blog.chinaunix.net/u2/88438/showart_1755011.html
5.
实际在mini2440上跑的时候,发现下载时,ntfs-3g占用太多cpu,特别是在异常关机重启后transmission
hash下载的数据时,基本上连transmisson-remote都连不上了,不是很实用,看来为了高速下载,只能下到ext分区了,完了再在主机上
拷贝到ntfs分区上,稍微麻烦一点.
你好,我最近也在做rtorrent的移植,开发板是arm9,我已经把rtorrent移植到板子上,但是启动rtorrent的时候,提示错误:Error opening terminal: xterm.也就是rtorrent的运行需要终端程序的支持,我的板子上没有xterm,所以,我想知道你是怎么让rtorrent在板子上正常启动的,谢谢!
Blog作者的回复:
可能是你没有把ncurses生成的库文件拷贝过去,ncurses会生成一堆目标文件,最好都拷贝进去,我记得好像是在/usr/local
/share下面有吧,有一些终端相关的文件(现在环境拆了,看不到了)。编译的ncurses的时候可以试着制定一下--prefix=/tmp,就可
以看到输出的到底是哪些文件了
阅读(973) | 评论(0) | 转发(0) |