編譯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的相關連接改回去。