CentOS7编译WD My Cloud下的SVN(Subversion)(附编译好的SVN的链接)
下載相關(guān)庫
cd $WD_BUILD_DIR wget?http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.6.2.tar.gz wget?https://github.com/libexpat/libexpat/releases/download/R_2_2_4/expat-2.2.4.tar.bz2 wget?http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.6.0.tar.gz wget?http://www.hwaci.com/sw/sqlite/snapshot/sqlite-snapshot-201707212031.tar.gz wget?http://mirrors.tuna.tsinghua.edu.cn/apache/subversion/subversion-1.9.7.tar.gz wget?http://www.zlib.net/zlib-1.2.11.tar.gz如果wget失敗可以自行搜索下載
編譯相關(guān)庫 1,apr 解壓: cd $WD_BUILD_DIR tar -zxvf?apr-1.6.2.tar.gz? cd?apr-1.6.2/?
設(shè)置相關(guān)參數(shù): 在configure前,需要修改下Makefile.in將如下內(nèi)容的紅色部分進(jìn)行修改: tools/gen_test_char@EXEEXT@: $(OBJECTS_gen_test_char) $(LINK_PROG) $(OBJECTS_gen_test_char) $(ALL_LIBS) 修改后的內(nèi)容為: 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=$WD_INSTALL_DIR/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=$WD_INSTALL_DIR/test是我所設(shè)置的編譯好的庫的安裝路徑,大家可以根據(jù)自己的實(shí)際情況進(jìn)行修改。另外ac_cv_sizeof_ssize_t=4 ac_cv_sizeof_size_t=4 ac_cv_sizeof_off_t=4需要重點(diǎn)說下,該參數(shù)如果不加入并不影響編譯過程,但是會在commit的時(shí)候會報(bào)如下錯(cuò)誤: Corrupt?node-revision “0.0.t0-0” Malformed?text?rep?offset line in node-rev 開始編譯&安裝: make make install?
2,expat 解壓: cd $WD_BUILD_DIR tar -jxvf?expat-2.2.4.tar.bz2 cd?expat-2.2.4/設(shè)置參數(shù):
./configure --prefix=$WD_INSTALL_DIR/expat --host=arm-marvell-linux-gnueabi編譯&安裝:
make make install在我make的時(shí)候好像報(bào)了個(gè)docbook2x什么的錯(cuò)誤(當(dāng)時(shí)安裝時(shí)沒有記下來),這個(gè)可以通過yum install 安裝與docbook*相關(guān)的庫即可,可自行搜索下。
簡單我直接全部安裝了yum install docbook*? 3,apr-util 解壓: cd $WD_BUILD_DIR tar -zxvf?apr-util-1.6.0.tar.gz cd?apr-util-1.6.0/設(shè)置參數(shù):
./configure --prefix=$WD_INSTALL_DIR/apr-util --host=arm-marvell-linux-gnueabi --with-expat=$WD_INSTALL_DIR/expat --with-apr=$WD_INSTALL_DIR/apr編譯&安裝:
make make install?4,sqlite
解壓: cd $WD_BUILD_DIR tar -zxvf?sqlite-snapshot-201707212031.tar.gz? cd sqlite-snapshot-201707212031/設(shè)置參數(shù):
./configure --prefix=$WD_INSTALL_DIR/sqlite --host=arm-marvell-linux-gnueabi?--enable-threadsafe?其中--enable-threadsafe這個(gè)需要設(shè)置,不然在svnadmin create的時(shí)候會報(bào)錯(cuò)
編譯&安裝: make make install5,zlib
解壓: cd $WD_BUILD_DIR tar -zxvf?zlib-1.2.11.tar.gz cd?zlib-1.2.11/設(shè)置參數(shù):
由于zlib的configure沒有--host可以指定編譯器和鏈接器,因此需要設(shè)置臨時(shí)的環(huán)境變量: export CC=arm-marvell-linux-gnueabi-gcc export CXX=arm-marvell-linux-gnueabi-g++ export LD=arm-marvell-linux-gnueabi-ld然后再configure:
?./configure --prefix=$WD_INSTALL_DIR/zlib編譯&安裝:
make make install6,subversion
解壓: cd $WD_BUILD_DIR tar -zxvf?subversion-1.9.7.tar.gz cd?subversion-1.9.7/設(shè)置參數(shù):
這里需要在configure前修改該文件,因?yàn)?.9.7版本在configure的時(shí)候會報(bào)如下錯(cuò)誤: checking for Mach-O dynamic module iteration functions... configure: error: in `/home/test/workplace/subversion-1.9.7': configure: error: cannot run test program while cross compiling 我的方法比較暴力,直接刪除configure中的如下內(nèi)容(紅色標(biāo)識的內(nèi)容): { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mach-O dynamic module iteration functions" >&5 $as_echo_n "checking for Mach-O dynamic module iteration functions... " >&6; } if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling See \`config.log' for more details" "$LINENO" 5; } else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <mach-o/dyld.h> #include <mach-o/loader.h> int main () { const struct mach_header *header = _dyld_get_image_header(0); const char *name = _dyld_get_image_name(0); if (name && header) return 0; return 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : $as_echo "#define SVN_HAVE_MACHO_ITERATE 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi 當(dāng)然,這篇文章[1]給出了另一種解決方案,同樣修改configure,紅色替換為綠色(不要加號): { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mach-O dynamic module iteration functions" >&5 ? ? $as_echo_n "checking for Mach-O dynamic module iteration functions... " >&6; } ? ? if test "$cross_compiling" = yes; then : ? ? - ?{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 ? ? -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} ? ? -as_fn_error $? "cannot run test program while cross compiling ? ? -See \`config.log' for more details" "$LINENO" 5; } ??? + ?{ ? ? { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ? ? +$as_echo "no" >&6; } ? ? + } ? ? else ? ? cat confdefs.h - conftest.$ac_ext ? ? /* end confdefs.h. ?*/ 修改configure完畢后開始configure: ./configure --prefix=$WD_INSTALL_DIR/subversion --host=arm-marvell-linux-gnueabi --with-apr=$WD_INSTALL_DIR/apr --with-apr-util=$WD_INSTALL_DIR/apr-util --with-sqlite=$WD_INSTALL_DIR/sqlite --with-zlib=$WD_INSTALL_DIR/zlib --enable-all-static這里為了編譯出standalone的可執(zhí)行文件,需要指定--enable-all-static。
在configure完成后,需要修改Makefile文件, 對如下紅色部分進(jìn)行修改: LIBS =? 修改后為: LIBS = -lpthread 就是讓工程鏈接工具鏈中的pthread庫,最后進(jìn)行編譯&安裝: make make install?至此,編譯工作就結(jié)束了,檢查一下看看:
cd?$WD_INSTALL_DIR/subversion/bin file subversion svnadmin 哈哈,可以看出,編譯出的版本為ARM版。 [lsheng@localhost bin]$ file svnadmin svnservesvnadmin: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.16, not stripped
svnserve: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.16, not stripped 安裝配置 拷貝可執(zhí)行文件(svnadmin和svnserve): 接下來需要在My Cloud中進(jìn)行配置,首先通過ssh登陸My Cloud,這里提一點(diǎn),由于My Cloud自身的存儲空間有限(供安裝系統(tǒng)和相關(guān)應(yīng)用的空間,不是指的/mnt下掛載的磁盤空間),因此,需要將subversion可執(zhí)行文件放在/mnt下掛載的磁盤中,執(zhí)行下列命令創(chuàng)建放置可執(zhí)行文件的目錄: cd?/mnt/HD/HD_a2/Public/ mkdir subversion
這樣就在磁盤上創(chuàng)建了subversion目錄(這里,/mnt/HD/HD_a2/Public目錄是我的Public共享目錄的路徑,或許每個(gè)人都不同),這時(shí)通過在windows資源管理器的地址欄中輸入\\192.168.1.102即可訪問到Public目錄下的subversion目錄,將編譯好的subversion可執(zhí)行文件(主要是svnadmin和svnserve)拷貝到subversion目錄下。
建立軟連接: ln -s /mnt/HD/HD_a2/Public/subversion/svnadmin /usr/bin/svnadmin ln -s /mnt/HD/HD_a2/Public/subversion/svnserve /usr/bin/svnserve建立倉庫&運(yùn)行:
可以通過執(zhí)行如下命令(示例命令)建立倉庫: mkdir -p?/mnt/HD/HD_a2/svn/reps svnadmin create?/mnt/HD/HD_a2/svn/reps以上命令會在/mnt/HD/HD_a2/svn目錄下建立名為reps的倉庫,當(dāng)然在千萬不要在My Cloud自身的存儲空間中創(chuàng)建倉庫,因?yàn)榭臻g根本不夠,可以在掛載的磁盤中創(chuàng)建。
接下來需要分別修改倉庫的conf目錄下的相關(guān)文件,具體怎么修改,直接搜即可,有很多教程。 最后運(yùn)行svnserve: sudo svnserve -d -r?/mnt/HD/HD_a2/svn最后注意一點(diǎn),-r后跟的目錄是到/mnt/HD/HD_a2/svn而不是/mnt/HD/HD_a2/svn/reps,切記!!
在電腦端運(yùn)行小烏龜TortoisSVN試試,對應(yīng)以上示例地址為: svn://192.168.1.102/reps 不出意外應(yīng)該就可以checkout和commit了。 不想折騰的兄弟,我把編譯好的可執(zhí)行文件給上傳了,直接下即可,以下為網(wǎng)盤地址。(切記!!型號不要搞錯(cuò)了,該版本對應(yīng)WD My Cloud ,固件版本是2.30) http://pan.baidu.com/s/1sl0pYNz 參考文獻(xiàn): [1]?http://www.cnblogs.com/keikain/p/7619741.html總結(jié)
以上是生活随笔為你收集整理的CentOS7编译WD My Cloud下的SVN(Subversion)(附编译好的SVN的链接)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10 ping命令与telnet命
- 下一篇: 看到网上有人说软件测试面试要会吹牛,我就