Linux dbm遇到的一些问题

遇到的问题一:gcc编译老是 undefined reference to `dbm_open'

具体描述 :

gcc -I/user/include -L/user/lib -o dbm1 dbm1.c -lgdbm

这条语句老是出错。我通过deb包安装了一次dbm,其文件分别在/usr/include 和/user/lib 中我将其包含进去编译出错。于是我尝试自己下载源文件,自己编译, http://Ubuntu.cn99.com/ubuntu/pool/main/g/gdbm/

编译好的文件分别在 /user/local/include 和/user/local/lib中,我将其包含进去编译,还是出现错误。意识到问题不在文件这。

真正的问题是,如果用gdbm,还要兼容dbm或ndmb,编译的时候要连接上gdbm_compat。使用下面这条命令,我通过了。

gcc -I/user/include -L/user/lib -o dbm1 dbm1.c -lgdbm -lgdbm_compat

如果是自己编译文件,先./configure  再make  再make install 最后make install-compat(这个就是安装那个扩展)。这些阅读下载的压缩包里面的README文件便清楚了。

遇到的问题二:找不到ndbm.h

具体描述: 通过deb包安装gdbm之后,发现找不到所需要的ndbm.h头文件。但是你会发现一个叫gdbm-ndbm.h的文件,你只需要把文件名改成ndbm.h就可以了,当然需要一定权限。

sudo cp '/usr/include/gdbm-ndbm.h'  '/usr/include/ndbm.h'

这样就OK了。