Re: Which header and lib files to use when compiling libpq-code?

Поиск
Список
Период
Сортировка
От Kynn Jones
Тема Re: Which header and lib files to use when compiling libpq-code?
Дата
Msg-id c2350ba40904270927x71c741edq7a96da2c6638ca9d@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Which header and lib files to use when compiling libpq-code?  (Martijn van Oosterhout <kleptog@svana.org>)
Ответы Re: Which header and lib files to use when compiling libpq-code?  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Which header and lib files to use when compiling libpq-code?  (Martijn van Oosterhout <kleptog@svana.org>)
Список pgsql-general


On Mon, Apr 27, 2009 at 11:10 AM, Martijn van Oosterhout <kleptog@svana.org> wrote:
On Mon, Apr 27, 2009 at 10:51:45AM -0400, Kynn Jones wrote:
> I need to compile some code that uses libpq.  For this I need to determine
> the directories to use for the header and library files.
>
> The machine I'm using has multiple copies of the files libpq-fe.h and
> libpq.a.  How can I determine which one of all these copies are the ones
> that correspond to the Pg server that is currently running on this system?
>  (FWIW, the OS here is Ubuntu Linux.)

In general you don't need to match the server version, the protocol
hasn't changed much in a while so as long as it's less than a few years
old it'll work.

This statement contradicts the experience I described in my original post: the choice of header and/or library files is absolutely critical.  The wrong choice lead to very bizarre connection failures.
 
> I tried the naive approach of using the "newest" versions of these files, as
> measured by their modification times.  This produced disastrous results.
>  The code compiled, but resulted in a program that failed in bizarre and
> unpredictable ways, which strongly hinted at one or more silent segmentation
> violations in the C code.  I conjectured that this was the result of a
> mismatched header or library file.  Sure enough, the bizarre failures
> disappeared when I used a different set of header and library files.

Given you're using Ubuntu, why not just install postgresql-dev and use
/usr/include/postgresql.

I don't have root privileges on this machine, so I could not install postgresql-dev, but, as it happens, /usr/include/postgresql already exists in this machine, in it is, in fact, the version that worked.

But this is not the problem that my question was about.  The problem is: *how to ensure* that the versions of libpq header and library files used for compiling programs will work properly with a specific Postgres server.

kynn

В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: how do you get there from here?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: find column OID types with information schema?