|
我从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文件中增加编译选项?
请各位大侠指点! |
|