编译vsftpd时,出现could not read symbols: File in wrong format错误提示,后搜寻相关资料,是由于vsftpd的一个安装文件没有考虑到64位平台库文件位置。vim
若是的的系统是64位平台,解决办法以下:ide
编辑源代码安装目录下的vsf_findlibs.sh, 将其中路径中的lib替换成lib64。ui
快速的vim替换命令是:spa
:%s?lib/?lib64/?orm
(须要检查是否彻底替换)it
若是检查系统是否为64位平台?编译
uname -mform
若是输出 x86_64,说明是64位平台class
为了不你从新编辑的麻烦,我将vsftpd部分代码从新编辑,使之能够在32位和64平台中顺利编译。ftp
修改以下:
1. 修改了builddesf.h, 添加了PAM, TCP_WRAPPERS支持
2. 修改了vsf_findlibs.sh, 使之能够在32位或64位平台上顺利编译。
3. 修改了vsftpd.conf, 适应通常禁止匿名访问的FTP站点的配置文件
或者
缘由是x86_64环境下vsftpd源代码下的vsf_findlibs.sh没处理好库文件的调用关系;可手动修改vsf_findlibs.sh中的相关代码,或者是用下面的简单方式修改相关lib的连接 rm -f /lib/libpam.so.0 ---这里删除的是连接文件,放心 ln -s /lib64/libpam.so.0.77 /lib/libpam.so.0 1.2 /lib/libcap.so.1: could not read symbols: File in wrong format 因一样的缘由引发,因此修改方式同上: rm -f /lib/libcap.so.1 ln -s /lib64/libcap.so.1.10 /lib/libcap.so.1以上修改后,再编译就不会报错。固然为了避免引发其余程序调用lib出错,最好是将lib的相关连接改回去。