QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 678|回复: 1

请教大侠:关于dbm.h及其makefile的修正

[复制链接]
发表于 2004-11-1 17:02:50 | 显示全部楼层 |阅读模式
我从UNIX将一个程序移植Linux下,该程序使用了dbm.h下的相关函数:
dbminit()
store()
fetch()
dbmclose()

UNIX下dbm.h在/usr/include下, Linux下dbm.h在/usr/include/gdbm下,

我把原来的头文件设置成: #include </usr/include/gdbm/dbm.h>

编译时用gcc -c 可以生成.o文件, 但是在连接时,报错:
trimplane.o: In function `main':
trimplane.o(.text+0x9aa): undefined reference to `dbminit'
trimplane.o(.text+0xa15): undefined reference to `store'
trimplane.o(.text+0xa85): undefined reference to `fetch'
trimplane.o(.text+0xacb): undefined reference to `dbmclose'

这是什么原因?

我将头文件又改成: #include <db.h>
编译不通过,报错:
trimplane.c: In function `main':
trimplane.c:61: `datum' undeclared (first use in this function)
但是我在db.h文件中找到了如下定义:

#if defined(_XPG4_2)
typedef struct {
        char *dptr;
        size_t dsize;
} datum;
#else
typedef struct {
        char *dptr;
        int dsize;
} datum;
#endif

为什么编译时仍然提示datum没有定义?

是否在makefile文件中增加编译选项?

请各位大侠指点!
发表于 2004-11-2 10:36:20 | 显示全部楼层
你是否没有链接库?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 05:28 , Processed in 0.036712 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表