解決 /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)

對於上述三種原因有一篇文章寫的很棒可參考這一篇文章的第4點:
gcc命令祥解


解決方法:
(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
简体中文版:  http://blog.sciencenet.cn/blog-676535-541444.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值