前言
前些阵子买了个WD的My Cloud EX2 Ultra,主要就是为了存放重要资料啥的。买回来发现配套的软件中竟然没有svn,于是便有了这篇折腾随笔了。
软硬件环境
1,WD My Cloud EX2 Ultra
硬件:
- Marvell® ARMADA® 385 1.3 GHz 双核
- 1 GB DDR3
软件:
其系统是剪裁过的Debain
2,交叉编译平台
Ubuntu 16.04.2 LTS server(安装在VMware中)
工具链:armv7-marvell-linux-gnueabi-softfp_i686_64K_Dev_20131002.tar.gz(这个WD官网可下载到https://support.wdc.com/downloads.aspx?p=270&lang=en)
相关库:apr-1.6.2.tar.gz
apr-util-1.6.0.tar.gz
expat-2.2.4.tar.bz2
sqlite-snapshot-201709211311.tar.gz
subversion-1.9.7.tar.gz
zlib-1.2.11.tar.gz
(这些库基本上都是写这篇随笔时能下到的最新版本了)
编译环境配置
在编译相关库的源码前需要配置下编译环境,相当简单,通过链接https://support.wdc.com/downloads.aspx?p=270&lang=en(下载最新的包)下载下来的WDMyCloud_Ex2Ultra_GPL_v2.30.165_20170321.tar.gz中包含了目录toolchains,该目录中包含工具链和source.me文件,只需要在编译前做两步工作即可。
1,在toolchains目录下解压工具链:
tar -zxvf armv7-marvell-linux-gnueabi-softfp_i686_64K_Dev_20131002.tar.gz
2,在toolchains目录下执行命令:
source source.me
即可配置好工具链,这样就不用修改/etc/profile了。
另外,我是通过SecureCRT连接VMware中的ubuntu,可以安装一个lrzsz:
sudo apt-get install lrzsz
这样方便windows和ubuntu之间的文件传输。
编译相关库
1,apr
解压:
tar -zxvf apr-1.6.2.tar.gz
cd apr-1.6.2/
设置相关参数:
在configure前,需要修改下Makefile.in将如下内容的红色部分进行修改:
tools/gen_test_char@EXEEXT@: $(OBJECTS_gen_test_char)
$(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS)
修改后的内容为:
tools/gen_test_char@EXEEXT@: $(OBJECTS_gen_test_char)
# $(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS)
gcc -Wall -O2 tools/gen_test_char.c -s -o tools/gen_test_char
切记"gcc -Wall -O2...."这行前面要按Tab键添加制表符,接着开始configure:
./configure --prefix=/home/test/res/apr --host=arm-marvell-linux-gnueabi ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_tcp_nodelay_with_cork=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes ac_cv_sizeof_ssize_t=4 ac_cv_sizeof_size_t=4 ac_cv_sizeof_off_t=4 ac_cv_sizeof_struct_iovec=8 --cache=arm-linux.cache
其中--prefix=/home/test/res/test是我所设置的编译好的库的安装路径,大家可以根据自己的实际情况进行修改。另外ac_cv_sizeof_ssize_t=4 ac_cv_sizeof_size_t=4 ac_cv_sizeof_off_t=4需要重点说下,该参数如果不加入并不影响编译过程,但是会在commit的时候会报如下错误:
Corrupt node-revision “0.0.t0-0”
Malformed text rep offset line in node-rev
开始编译&安装:
make
make install
2,expat
解压:
tar -jxvf expat-2.2.4.tar.bz2
cd expat-2.2.4/
设置参数:
./configure --prefix=/home/test/res/expat --host=arm-marvell-linux-gnueabi
编译&安装:
make
make install
在我make的时候好像报了个docbook2x什么的错误(当时安装时没有记下来),这个可以通过apt-get 安装与docbook*相关的库即可,这里记忆有些模糊了,可自行搜索下。
3,apr-util
解压:
tar -zxvf apr-util-1.6.0.tar.gz
cd apr-util-1.6.0/
设置参数:
./configure --prefix=/home/test/res/apr-util --host=arm-marvell-linux-gnueabi --with-expat=/home/test/res/expat --with-apr=/home/test/res/apr
编译&安装:
make
make install
4,sqlite
解压:
tar -zxvf sqlite-snapshot-201709211311.tar.gz
cd sqlite-snapshot-201709211311/
设置参数:
./configure --prefix=/home/test/res/sqlite --host=arm-marvell-linux-gnueabi --enable-threadsafe
其中--enable-threadsafe这个需要设置,不然在svnadmin create的时候会报错
编译&安装:
make
make install
5,zlib
解压:
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.1