vsftp移植(待续)

1. 下载sftp包,解压。如vsftpd-2.3.5.tar.gz
2. 编译

    进入目录后,修改交叉编译工具(vi Makefile)

    CC      = arm-none-linux-gnueabi-gcc

    直接make即可,生成可执行文件vsftpd。

    出现错误:

sysdeputil.o: In function `vsf_sysdep_check_auth':
sysdeputil.c:(.text+0xce8): undefined reference to `crypt'
sysdeputil.c:(.text+0xd0c): undefined reference to `crypt'
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
    未连接库:crypt,查看Makefile,

 10 #LIBS   =   `./vsf_findlibs.sh`  
 11 LIBS    =   -lcrypt
    编译时发现vsf_findlibs.sh并未执行(即使执行,脚本也有误,ubuntu下shell 0为真,1为假)。

    直接注释脚本,链接库(-lcrypt)。

3.移植文件和库

    查看vsftpd属性:

~$file vsftpd
vsftpd: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, stripped
    vsftpd为动态链接,需要拷贝动态库:

~$arm-none-linux-gnueabi-readelf -d vsftpd

Dynamic section at offset 0x165b4 contains 25 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libcrypt.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
......

需要两个动态库libcrypt.so.1和libc.so.6。

注:此外动态编译的可执行文件执行需要加载器,要确保加载器也一并移植:

 交叉编译工具链提供的加载器文件:

~$ls -al ld*
-rwxrwxr-x 1 yuxi yuxi 144480 Aug  4 15:24 ld-2.5.so
lrwxrwxrwx 1 yuxi yuxi      9 Aug  4 15:24 ld-linux.so.3 -> ld-2.5.so

需拷贝的两个加载器文件:ld-2.5.so      ld-linux.so.3

共5个文件:usr/sbin   ->vsftpd

                   lib -> libcrypt.so.1    libc.so.6    ld-2.5.so    ld-linux.so.3

现在可以下载到板卡上测试:

~ # vsftpd                                                                      
500 OOPS: vsftpd: not configured for standalone, must be started from inetd

vsftpd可正常运行,只是缺少配置文件。

4. vsftpd配置文件vsftpd.conf

  

参考:

1. 在Linux下使用vsftpd搭建FTP服务器

原文地址:https://www.cnblogs.com/embedded-linux/p/4822913.html