下载vsftp源码
然后修改Makefile,将CC修改为$(CROSS_COMPILE)gcc
编译即可。
默认vsftpd需要PAM支持。如果使用busybox做rootfs的话支持PAM比较麻烦,可以将sysdeputil.c文件中关于“pam_”开头的函数调用全部删除。然后重新编译。
编译最后会出现如下错误:
arm-linux-gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o ssl.o sysutil.o sysdeputil.o -Wl,-s
./vsf_findlibs.sh
/lib/libcap.so.1: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
出现这个问题不需要用google出来的修改vsf_findlibs.sh文件。其实这个文件是寻找需要加链接是需要的动态库。我们直接复制这行编译命令,然后将最后的./vsf_findlibs.sh
修改为 “-lcap”即可,如果没有删除sysdeputil.c的pam_函数还需要加”-lpam”。
另外需要vsftpd.conf放到/etc目录下。