1. 程式人生 > >vsftpd-2.3.4移植到8621開發板

vsftpd-2.3.4移植到8621開發板

客戶不知道從哪裡買來塊板子,讓我幫他移植程式。先開始搭環境。

(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可正常連線。