在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,有問題歡迎探討。