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”目录下做操作。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值