這個地方太坑了,我的是小米路由器3,想當然地覺得應(yīng)該是第一項,里面的toolchain是一個ARM的GCC交叉編譯器,還好本人對嵌入式linux開發(fā)有所了解,也編譯過一些程序。
(1)安裝虛擬機,安裝ubuntu,以前都是用32位ubuntu的,這次也不例外,安裝完成后發(fā)現(xiàn)toolchain是64位的,無奈重裝ubuntu 64。
(2)編譯apr、apr-util、zlib和subversion,中間雖然有波折,但總算順利,具體不說了,傳到路由器上后,執(zhí)行svnadmin,這是什么鬼?
1dd943c59d6a29ae95f1b39c8619d052.jpg (25.08 KB, 下載次數(shù): 13)
下載附件
保存到相冊
2017-1-8 15:44 上傳
小米路由器3采用MT7620芯片,不是ARM
下載小米路由器Mini的開發(fā)工具,配置完成后特地寫了一個hello world,運行無誤。但編譯過程中提示環(huán)境變量STAGING_DIR未設(shè)置,選擇了無視,但終于還是編譯不過去。“STAGING_DIR到底設(shè)置為什么?”,既然小米路由器3是基于OpenWrt的,還是從OpenWrt的開發(fā)工具下手吧。
3、正確的編譯過程
經(jīng)過無數(shù)次的失敗,終于能夠編譯成功了,過程如下:
(1)下載https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt3883/OpenWrt-SDK-15.05-ramips-rt3883_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2(服務(wù)器上有MT7620版本的,但實測編譯出的程序無法在小米路由器上運行,RT3883的可以?。?,將壓縮包中staging_dir目錄的內(nèi)容解壓到/home/mipsel
cc67ea35520de05a4c0b79d82009f6e6.jpg (31.36 KB, 下載次數(shù): 17)
下載附件
保存到相冊
2017-1-8 15:44 上傳
(2)設(shè)置以下環(huán)境變量
STAGING_DIR="/home/mipsel"
TOOLCHAIN="$STAGING_DIR/toolchain-mipsel_74Kc+dsp2_gcc-4.8-linaro_uClibc-0.9.33.2"
DEPENDS=$STAGING_DIR/target-mipsel_74kc+dsp2_uClibc-0.9.33.2/usr
HOST="mipsel-openwrt-linux"
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$STAGING_DIR/toolchain-mipsel_74kc+dsp2_gcc-4.8-linaro_uClibc-0.9.33.2/bin"
export CC="$HOST-gcc"
export CPP="$HOST-cpp"
export GCC="$HOST-gcc"
export CXX="$HOST-g++"
export RANLIB="$HOST-ranlib"
(3)下載http://archive.apache.org/dist/subversion/subversion-1.9.5.tar.gz,解壓,運行其下get-deps.sh腳本下載依賴項。
分別用以下參數(shù)配置Apr、Apr-util、Zlib和Subversion,然后make && make install
./configure --prefix=$TARGET/apr --host=$HOST ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes ac_cv_sizeof_struct_iovec=8
(需要改configure文件和want.h,自行百度)
./configure --prefix=$TARGET/apr-util --host=$HOST --with-apr=/home/glory/svn/apr
./configure --prefix=$TARGET/zlib
./configure --prefix=$TARGET/subversion --host=$HOST --with-apr=$TARGET/apr --with-apr-util=$TARGET/apr-util --with-zlib=$TARGET/zlib
如此,編譯成功,將安裝目錄下的bin/*、lib/*.so*分別拷貝到bin和lib,上傳到路由器,創(chuàng)建庫,修改svnserve.conf、authz、passwd三個文件,運行。
787b68c684ae8c4b5418b8eb668de200.jpg (39.51 KB, 下載次數(shù): 12)
下載附件
保存到相冊
2017-1-8 15:44 上傳
(4)看似成功了,執(zhí)行一下創(chuàng)建目錄試試
902da0499612f08d788c2f87e258ce71.jpg (91.66 KB, 下載次數(shù): 11)
下載附件
保存到相冊
2017-1-8 15:44 上傳
用小烏龜測試也一樣,就是報錯。
山重水復(fù)疑無路,柳暗花明又一村。
Malformed?一遍遍地修改參數(shù)、重新編譯,盯著屏幕看..................
3819742a0042d7609583b55b320f4008.jpg (67.97 KB, 下載次數(shù): 17)
下載附件
保存到相冊
2017-1-8 15:44 上傳
終于看到這三個值,不對吧?!文件格式畸形,大概就是字段長度設(shè)置錯誤了!果斷添加ac_cv_sizeof_ssize_t=4 ac_cv_sizeof_size_t=4 ac_cv_sizeof_off_t=4參數(shù),大功告成!?。。。。。。。。。。?!
到這里應(yīng)該上可執(zhí)行文件了,但此處上傳附件實在太慢了,上傳至CSDN了,svnserver for 小米路由器3,相信玩SVN的都是程序猿,如果有需要順便打賞點分數(shù)吧。
配置說明
(1)下載,解壓到外部硬盤(小米路由器3內(nèi)部可用存儲大約60M,能夠放下,但占用太多空間可能引起路由器不穩(wěn)定),如/extdisks/sda1/svn
(2)設(shè)置環(huán)境變量
export PATH=$PATH:/extdisks/sda1/svn/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/extdisks/sda1/svn/lib
(3)創(chuàng)建庫
svnadmin create /extdisks/sda1/svn/repo
(4)修改配置文件
vi /extdisks/sda1/svn/repo/svnserve.conf
修改以下行:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
vi /extdisks/sda1/svn/repo/authz
修改如下:
[groups]
admin=xxx,svnadmin
[/]
@admin = rw
* = r
vi /extdisks/sda1/svn/repo/svnserve.conf
修改如下:
[users]
svnadmin = xxxxxx
xxx = xxx
(5)啟動服務(wù)
svnserve -d -r /extdisks/sda1/svn/repo
(6)大功告成,剩下的設(shè)置開機啟動、配置防火墻等就不在此啰嗦了