make報錯:"usr/bin/ld: cannot find -l***


在Linux編譯程序時,有的程序會報錯如下:

#gmake -f dc_debug.mak
.......
/usr/bin/ld: cannot find -ldscompress_x32
collect2: ld returned 1 exit status
gmake: *** [dc_shl2_v2.0.0_130423_b1_x32.exe] Error 1

問題原因
  該問題的原因一般是由於ld 在進行庫連接時找不到庫文件所致;

解決方案:
  出現該問題時,去lib目錄下查找相關的庫文件,基本如下:
  #cd /usr/lib
  #ll | grep libltdl
  lrwxrwxrwx   1 root root       16 Dec 13  2012 libltdl.so.3 -> libltdl.so.3.1.4
  -rwxr-xr-x   1 root root    24004 Nov 23  2009 libltdl.so.3.1.4

上述庫文件中沒有庫的入口:libltdl.so

可以手動建立一個連接來解決

#ln -s ./libltdl.so.3 ./libltdl.so
   但是深究問題,應該是該庫的頭文件庫沒有安裝所致:
#yum list all | grep ltdl
libtool-ltdl.i386                           1.5.22-7.el5_4             installed
libtool-ltdl-devel.i386                     1.5.22-7.el5_4             server
   下面就安裝頭文件:
#yum -y install libtool-ltdl-devel.i386
。。。
   查看后發現確實是由於devel頭文件沒有安裝所致
# rpm -ql libtool-ltdl-devel.i386
/usr/include/ltdl.h
/usr/lib/libltdl.a
/usr/lib/libltdl.la
/usr/lib/libltdl.so
問題解決,小伙伴們可以對照自己動手解決自己的bug,有問題歡迎探討。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM