vsftpd-2.3.4移植到8621開發板
阿新 • • 發佈:2019-01-28
客戶不知道從哪裡買來塊板子,讓我幫他移植程式。先開始搭環境。
(1)解壓vsftpd-2.3.4.tar.gz
#tar xvzf vsftpd-2.3.4.tar.gz
(2)交叉編譯
需要修改的地方有兩處。
第一處是Makefile:
# Makefile for systems with GNU tools CC = /usr/local/arm/cross/openwrt/bin/arm-openwrt-linux-gnueabi-gcc <span style="color:#ff0000;">修改為交叉編譯器的地址,這裡選用絕對地址,不需要在profile裡邊新增gcc的PATH。</span> LIBS = `./vsf_findlibs.sh` 末尾增加 -lcrypt 變成 LIBS = `./vsf_findlibs.sh` -lcrypt
第二處是指令碼vsf_findlibs.sh。這裡主要是牽扯到庫libcap的問題。直接去掉。
# Look for libcap (capabilities) #if locate_library /lib/libcap.so.1; then # echo "/lib/libcap.so.1"; #elif locate_library /lib/libcap.so.2; then # echo "/lib/libcap.so.2"; #else # locate_library /usr/lib/libcap.so && echo "-lcap"; # locate_library /lib/libcap.so && echo "-lcap"; # locate_library /lib64/libcap.so && echo "-lcap"; #fi
改完後,執行sudo make,動態編譯成功了,得到vsftpd。
之後根據需要修改vsftpd.conf。
將vsftpd複製到arm板的/usr/sbin/
將vsftpd.conf複製到arm板的/etc/
終端輸入
vsftpd &
ps檢視進行發現程式正常執行
此時用fxp連線arm板IP,發現
解決方法:[12:05:33] [R] 正在連線到 192.168.0.178 -> IP=192.168.0.178 PORT=21 (次嘗試 # 1) [12:05:33] [R] 已連線到 192.168.0.178 [12:05:33] [R] 500 OOPS: vsftpd: cannot locate user specified in 'ftp_username':ftp [12:05:33] [R] 連線失敗 [12:05:33] [R] 嘗試重新連線 #120 次後延遲 2 秒
vi /etc/vsftpd.conf
新增
ftp_username=m #m為arm上的user
重啟vsftpd
此時用fxp連線arm板IP,發現
[12:12:27] [R] 正在連線到 192.168.0.178 -> IP=192.168.0.178 PORT=21
[12:12:27] [R] 已連線到 192.168.0.178
[12:12:27] [R] 500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/var/run/vsftpd/empty
[12:12:27] [R] 連線失敗
[12:12:27] [R] 嘗試重新連線 #10 次後延遲 1 秒
解決方法:
mkdir /var/run/vsftpd/empty
之後fxp可正常連線。