遇到的问题一:gcc编译老是 undefined reference to `dbm_open'
具体描述 :
gcc -I/user/include -L/user/lib -o dbm1 dbm1.c -lgdbm
这条语句老是出错。我通过deb包安装了一次dbm,其文件分别在/usr/include 和/user/lib 中我将其包含进去编译出错。于是我尝试自己下载源文件,自己编译, 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了。