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

解决vsftpd编译时的错误:could not read symbols: File in wrong format

2014-06-26 19:55 531 查看
编译vsftpd时,出现could not read symbols: File in wrong format错误提示,后搜寻相关资料,是因为vsftpd的一个安装文件没有考虑到64位平台库文件位置。
如果的的系统是64位平台,解决办法如下: 编辑源代码安装目录下的vsf_findlibs.sh, 将其中路径中的lib替换成lib64。 快速的vim替换命令是: :%s?lib/?lib64/? (需要检查是否完全替换)如果检查系统是否为64位平台? uname -m如果输出 x86_64,说明是64位平台 为了避免你重新编辑的麻烦,我将vsftpd部分代码重新编辑,使之可以在32位和64平台中顺利编译。 修改如下: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的相关链接改回去。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐