萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux中出現/usr/bin/ld: cannot find

Linux中出現/usr/bin/ld: cannot find

  Linux環境下進行編譯的時候有時會出現“/usr/bin/ld:cannot find -lxxx”錯誤提示,這個提示是什麼意思呢?該如何處理?下面小編就教你如何處理該情況。

 Linux中出現/usr/bin/ld: cannot find -lxxx報錯該怎麼辦?

  在linux環境編譯應用程式或lib的source code時常常會出現如下的錯誤訊息:

  代碼如下:

  /usr/bin/ld: cannot find -lxxx

  這些訊息會隨著編譯不同類型的source code 而有不同的結果出來如:

  代碼如下:

  /usr/bin/ld: cannot find -lc

  /usr/bin/ld: cannot find -lltdl

  /usr/bin/ld: cannot find -lXtst

  其中xxx即表示函式庫文件名稱,如上例的:libc.so、libltdl.so、libXtst.so。

  其命名規則是:lib+庫名(即xxx)+.so。

  會發生這樣的原因有以下三種情形:

  1 系統沒有安裝相對應的lib

  2 相對應的lib版本不對

  3 lib(.so檔)的symbolic link 不正確,沒有連結到正確的函式庫文件(.so)

  解決方法:

  (1)先判斷在/usr/lib 下的相對應的函式庫文件(.so) 的symbolic link 是否正確

  若不正確改成正確的連結目標即可解決問題。

  (2)若不是symbolic link 的問題引起,而是系統缺少相對應的lib安裝lib即可解決。

  (3)如何安裝缺少的lib:

  以上面三個錯誤訊息為例:

  代碼如下:

  錯誤1缺少libc的LIB

  錯誤2缺少libltdl的LIB

  錯誤3缺少libXtst的LIB

  以Ubuntu為例:

  先搜尋相對應的LIB再進行安裝的作業如:

  代碼如下:

  apt-cache search libc-dev

  apt-cache search libltdl-dev

  apt-cache search libXtst-dev

  實例:

  在進行輸入法gcin的Source Code的編譯時出現以下的錯誤訊息:

  代碼如下:

  /usr/bin/ld: cannot find -lXtst

  經檢查後發現是:

  lib(.so檔)的symbolic link 不正確

  解決方法如下:

  代碼如下:

  cd /usr/lib

  ln -s libXtst.so.6 libXtst.so

  如果在/usr/lib的目錄下找不到libXtst.so 檔,那麼就表示系統沒有安裝libXtst的函式庫。

  解法如下:

  代碼如下:

  apt-get install libxtst-dev

  上面就是Linux下出現/usr/bin/ld: cannot find -lxxx報錯的方法介紹了,如果你在編譯的時候出現了該情況,那麼你可以嘗試上面的方法來解決。

copyright © 萬盛學電腦網 all rights reserved