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服务器

vsftp移植(待续)的更多相关文章

  1. 待续:s5p6818移植 uboot 2014.07 移植

    前言: 之前半年一直在嵌入式Linux移植中挣扎,不知道该从哪个方面开始入手,也失败了很多次,苦思了很久最终决定先从uboot开始. uboot版本的不同会导致添加板子的时候的配置方法会不一样.由于手 ...

  2. 移植vsftpd到arm linux

    vsftpd即very secure FTP daemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux.BSD. ...

  3. 【转】移植vsftpd到arm linux

    vsftpd即very secure FTP daemon(非常安全的FTP进程),是一个基于GPL发布的类UNIX类操作系统上运行的服务器的名字(是一种守护进程),可以运行在诸如Linux.BSD. ...

  4. 基于tiny4412的Linux内核移植 -- 设备树的展开

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  5. 基于tiny4412的Linux内核移植 -- MMA7660驱动移植(九-2)

    作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...

  6. ok6410 u-boot-2012.04.01移植五支持DM9000

    继ok6410 u-boot-2012.04.01移植四后,开发板基本已支持MLC NAND,但还有一些细节地方修改,这节增加DM9000支持,通过网卡tftp程序到内存,接着通过NAND命令写到NA ...

  7. 在LwIP 协议栈移植 Snap 7

    本文欢迎引用,转载. 引用,转载请标明出处! 调试完毕源码将上传到GitHub 为了嵌入式系统与STEP 7 PLC 通过S7 协议通讯,尝试移植 Snap 7 到STM32F407 cpu 上. 今 ...

  8. 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统

    1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: bootcmd=nan ...

  9. 2.移植3.4内核-使内核支持烧写yaffs2

    在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章便开始使内核支持烧写yaffs2文件系统 1.首先获取yaffs2源码(参考git命令使用详解) cd /work/nfs_root g ...

随机推荐

  1. HDUOJ----数塔

    数塔 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission ...

  2. 商业规则引擎IBM WebSphere ILog JRules概述,开发基础教程

    Ilog Jrules开发基础教程有7篇,地址规则引擎Ilog Jrules开发基础教程[连载1]-- 概述篇 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来 ...

  3. 有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,log4j向多个文件记录日志

    log4j向多个文件记录日志 关键配置,指定想要的日志级别信息输出到指定的日志文件中: log4j.appender.errorLogger.Threshold=ERROR #扩展,可指定只在子类自己 ...

  4. Outlook如何定时发邮件

    http://jingyan.baidu.com/article/c843ea0b63e15377931e4a0e.html 更多文章: Outlook定时发送邮件问题-http://blog.sin ...

  5. Spring MVC+Mybatis 执行存储过程,使用Map进行参数的传递

    研究了一天mybatis如何执行存储过程,基本了解了ORM的设计思想,在map层面进行对象关系映射有两种思路. 根据不同的业务使用不同的思路: 一.实体类和数据库映射,就是将数据库中的字段和java实 ...

  6. Unix环境高级编程(十六)进程间通信

    进程间通信(IPC)是指能在两个进程间进行数据交换的机制.现代OS都对进程有保护机制,因此两个进程不能直接交换数据,必须通过一定机制来完成. IPC的机制的作用: (1)一个软件也能更容易跟第三方软件 ...

  7. python标准库介绍——10 sys 模块详解

    ==sys 模块== ``sys`` 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. === 处理命令行参数=== 在解释器启动后, ``argv`` 列表包含了传递给脚本的所有 ...

  8. sqlserver计算时间差DATEDIFF 函数

    DATEDIFF 函数 [日期和时间] 功能 返回两个日期之间的间隔. 语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 ) ...

  9. Linux中telnet命令

    telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户 ...

  10. HDU 2256 Problem of Precision(矩阵高速幂)

    题目地址:HDU 2256 思路: (sqrt(2)+sqrt(3))^2*n=(5+2*sqrt(6))^n; 这时要注意到(5+2*sqrt(6))^n总能够表示成an+bn*sqrt(6); a ...