Проблема с библиотекой libpq в Debian - PullRequest
2 голосов
/ 19 сентября 2011

Я устанавливаю postgresql 8.4 в Debian, поместите программу testlibpq.c из http://www.postgresql.org/docs/9.0/interactive/libpq-example.html в каталог, в котором есть файл libpq-fe.h, но после компиляции gcc напишите мне

testlibpq.c:(.text+0x4a): undefined reference to `PQconnectdb'
testlibpq.c:(.text+0x5a): undefined reference to `PQstatus'
testlibpq.c:(.text+0x6f): undefined reference to `PQerrorMessage'
testlibpq.c:(.text+0xa9): undefined reference to `PQexec'
testlibpq.c:(.text+0xb9): undefined reference to `PQresultStatus'
testlibpq.c:(.text+0xcf): undefined reference to `PQerrorMessage'
testlibpq.c:(.text+0xf5): undefined reference to `PQclear'
testlibpq.c:(.text+0x10d): undefined reference to `PQclear'
testlibpq.c:(.text+0x121): undefined reference to `PQexec' 

... т. Д. Что я должен сделать, чтобы исправить работу?

1 Ответ

7 голосов
/ 19 сентября 2011

Похоже, вы не связываете библиотеку PostgreSQL.Вы должны компилировать testlibpq.c примерно так:

gcc -o testlibpq testlibpq.c -lpq

-lpq говорит компоновщику связываться с библиотекой PostgreSQL, и именно отсюда PQconnectdb и друзья.

Вам может потребоваться указать компилятору, где также найти библиотеки и заголовки, если это так, то что-то вроде этого должно разобраться:

gcc -o testlibpq -I$(pg_config --includedir) -L$(pg_config --libdir) -o testlibpq $(pg_config --libs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...