不能编译gdbm程序?(解决)

本文介绍了在Ubuntu 10.04中编译gdbm程序时遇到的问题及解决方案。编译时由于缺少gdbm库,需要从GNU网站下载并安装,同时注意安装ndbm。在尝试编译时遇到undefined reference错误,通过添加`-lgdbm`和`-lgdbm_compat`链接选项成功解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

下面是一个从《Beginning Linux Programming 3rd》中的一个例子程序,但是在Ubuntu下编译不了,原因是10.04中没有安装gdbm,在www.gnu.org上下载gdbm,安装时要记得将make install_compa,即将ndbm同时安装上。

 

尝试编译1:
$gcc dbm1.c -o gdbm1 -lgdbm
错误信息:
/tmp/cc2vMknU.o: In function `main':
dbm1.c: (.text+0x2d): undefined reference to `dbm_open'
dbm1.c: (.text+0x244): undefined reference to `dbm_store'
dbm1.c: (.text+0x2ee): undefined reference to `dbm_fetch'
dbm1.c: (.text+0x379): undefined reference to `dbm_close'
collect2: ld returned 1 exit status

尝试编译2:
$ gcc dbm1.c -o gdbm1 -lndbm -L/usr/lib
错误信息:
/usr/bin/ld: cannot find -lndbm
collect2: ld returned 1 exit status

解决了:
如果用gdbm,还要兼容dbm或ndmb,编译的时候要连接上gdbm_compat:
$ gcc dbm1.c -o dbm1 -lgdbm -lgdbm_compat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值