您的位置:首页 > 编程语言 > PHP开发

vsftp移植(待续)

2015-09-20 09:56 706 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: