解決vsftpd編譯時的錯誤:could not read symbols: File in wrong format

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

相關文章
相關標籤/搜索