vsftp之必要的安装目录与交叉编译问题

来源:互联网 发布:同花顺选股编程 编辑:程序博客网 时间:2024/06/05 10:47


高版本为何编译不成功:

在版本比较高的vsftp源码中的Makefile中可能会有这么一句话:

LDFLAGS= -fPIE -pie -Wl,-z,relro -Wl,-z,now

如可此时交叉编译,虽然可以编译成功,但 file vsftpd 会发现,vsftpd是  shared object,而不是我们想要的executable

scw@scw-VB:~/buildroot-2017.02.3/dl/vsftpd-3.0.3$ file vsftpd
vsftpd: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.38, stripped

经过试验发现,把 ( LDFLAGS = -fPIE -pie -Wl,-z,relro -Wl,-z,now  )中的  -pie 去掉就可以编译出我们想要的可执行文件

scw@scw-VB:~/buildroot-2017.02.3/dl/vsftpd-3.0.3$ file vsftpd
vsftpd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.38, stripped


(pie  :position independent executables)是安卓中的一种保护机制,而我们现在的系统时arm板Linux,所以不需要 -pie

同理 :以后再移植其他软件时,若是发现此类问题,可以采取此种处理机制




在vsftp源码中:

1:vsf_findlibs.sh 文件是vsftp安装包所用到的库路径指定文件

2:builddefs.h文件定义了一些必要的宏定义

3:INSTALL文件列举了必要的安装配置步骤



Step 1) Build vsftpd

Step 2) Satisfy vsftpd pre-requisites(必要步骤)

2a)  useradd nobody  添加nobody用户

2b)  mkdir /usr/share/empty/    创建一个目录

2c)   mkdir /var/ftp/

useradd -d /var/ftp ftp(创建匿名用户FTP)

chown root.root   /var/ftp

chmod og-w /var/ftp

Step 3) Install vsftpd config file(可手动复制)


在用FTP用户登录时,发现ls 无法显示FTP下的内容,虽然FTP用户默认的根目录是、var/tfp,但依然需要在配置文件中手动添加这么一句:anon_root=/var/ftp,然后在ls 就可以显示、var/ftp下的目录或文件。

注:在使用FTP传输数据是一定要注意所要操作的目录的权限问题。

原创粉丝点击