postgresql的C库怎么用?一直提示undefined reference to...

数据库服务和管理,MySQL/PostgreSQL/Oracle/Sybase 等
回复
Musoy
帖子: 12
注册时间: 2010-05-20 12:10
送出感谢: 0
接收感谢: 0

postgresql的C库怎么用?一直提示undefined reference to...

#1

帖子 Musoy » 2010-11-06 17:00

装了libpq-dev后,C程序编译通不过,一直报错,所有的PQ...型函数都提示找不到入口.
下面是报错提示:
/tmp/ccSxUVAT.o: In function `main':
psql_test.c:(.text+0x79): undefined reference to `PQsetdbLogin'
psql_test.c:(.text+0x89): undefined reference to `PQstatus'
psql_test.c:(.text+0xb8): undefined reference to `PQfinish'
psql_test.c:(.text+0xd6): undefined reference to `PQexec'
psql_test.c:(.text+0xe6): undefined reference to `PQresultStatus'
psql_test.c:(.text+0x11f): undefined reference to `PQclear'
psql_test.c:(.text+0x135): undefined reference to `PQntuples'
psql_test.c:(.text+0x145): undefined reference to `PQnfields'
psql_test.c:(.text+0x179): undefined reference to `PQgetvalue'
psql_test.c:(.text+0x1ce): undefined reference to `PQfinish'
psql_test.c:(.text+0x1da): undefined reference to `PQclear'
collect2: ld returned 1 exit status
有没有人知道这大概是什么问题?难道是我少装什么东西了吗?
Musoy
帖子: 12
注册时间: 2010-05-20 12:10
送出感谢: 0
接收感谢: 0

Re: postgresql的C库怎么用?一直提示undefined reference to...

#2

帖子 Musoy » 2010-11-06 20:49

我装的服务器是9.0的.是不是必须得用相应的开发包?该怎么找?
Musoy
帖子: 12
注册时间: 2010-05-20 12:10
送出感谢: 0
接收感谢: 0

Re: postgresql的C库怎么用?一直提示undefined reference to...

#3

帖子 Musoy » 2010-11-06 22:20

自己搞定了,官网上的安装包是带有C库的.psql默认安装在/opt/PostgreSQL/9.0下,里面有include和lib这两个目录,写C程序的时候包含include下的libpq-fe.h.在编译连接的时候,连接lib目录下的libpq.so.按理说应该是把这个目录加到LD_LIBRARY_PATH中就可以了,但是不知道怎么回事不行,还是对gcc编译器的工作原理不了解.最后只好在编译的时候加参数来解决这个问题了.命令是这样的:
$ gcc -Ldir /opt/PostgreSQL/9.0/lib/libpq.so psql_test.c
如果有朋友知道怎么自动查找动态库,麻烦说一声.谢谢
回复

回到 “数据库管理”