Linux C報錯: /usr/bin/ld: cannot find -ldb

今天在服務器編寫代碼的時候遇到了這個錯誤,上次遇到的時候解決了下,這次操作系統重裝後又遇到了

相同的錯誤,在此記錄一下,如果你也遇到了類似的錯誤,可以用一下方法是否能夠解決。


代碼在linux下編譯運行,下面是編譯的最後一步,用到了許多庫文件:

<span style="font-family:Comic Sans MS;font-size:12px;">gcc -o ****  -lmysqlclient -lapr-0 -lpthread -laprutil-0 -lz -lexpat -lgdbm -ldb -liconv -lpcre -lssl</span>

這句代碼裏使用了多個類庫,後面的每一個"-lxxx"都對應的是一個“libxxx.so”文件,該文件位置應該在“/lib”、

“/lib64”、“/usr/lib”或“/usr/lib64”目錄下,如果你再編譯代碼時發生了上面錯誤,最可能的原因就是“libxxx.so”的

文件不存在,此時你需要先去系統裏面搜索該庫文件是否存在,比如此次我搜索的文件是“libdb.so”。


<span style="font-family:Comic Sans MS;font-size:12px;">[root@localhost lib]# find / | grep libdb</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/xorg/modules/extensions/libdbe.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/libdbus-glib-1.so.2.1.0</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbacfglx.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbmmlx.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbpool2.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbaselx.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbtoolslx.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbalx.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbulx.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/openoffice.org/basis3.1/program/libdbaxmllx.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/libdbus-glib-1.so.2</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/libdb-4.3.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/xulrunner-2/components/libdbusservice.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib64/libdb_cxx-4.3.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib/libdbus-glib-1.so.2.1.0</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib/libdbus-glib-1.so.2</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib/libdb-4.3.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib/xulrunner-2/components/libdbusservice.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/lib/libdb_cxx-4.3.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/usr/local/mysql/lib/mysql/libdbug.a</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/lib64/libdb-4.3.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/lib64/libdbus-1.so.3</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/lib64/libdbus-1.so.3.4.0</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/root/mysql-client/mysql-5.1.49/dbug/libdbug.a</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/lib/libdb-4.3.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/lib/libdbus-1.so.3</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/lib/libdb.so</span>
<span style="font-family:Comic Sans MS;font-size:12px;">/lib/libdbus-1.so.3.4.0</span>
<span style="font-family:Comic Sans MS;font-size:12px;">[root@localhost lib]#</span>

發現“/lib”和“/lib64”下都有“libdb-4.3.so”,這個是特定版本的庫文件,我們需要生成一個軟連接指向該文

件,以便編譯器可以找到他們。 如果沒有發現上面的文件,那說明你還未安裝該庫,請先安裝,如果安裝後不能

編譯,可以嘗試下面方法。

[root@localhost lib64]# ln -s libdb-4.3.so libdb.so 

[root@localhost lib64]# ll libdb*

-rwxr-xr-x 1 root root 1008656 Jul 13  2010 libdb-4.3.so

lrwxrwxrwx 1 root root      12 Nov 19 18:06 libdb.so -> libdb-4.3.so

lrwxrwxrwx 1 root root      18 Aug 30 02:17 libdbus-1.so.3 -> libdbus-1.so.3.4.0

-rwxr-xr-x 1 root root  243280 Aug 12  2011 libdbus-1.so.3.4.0

[root@localhost lib64]# 

此處是因爲我的服務器是64位系統,所以需要處理的是“/lib64”,如果你的系統是32位的,那麼你就應該

在你的“/lib”目錄下做操作。









發佈了43 篇原創文章 · 獲贊 22 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章