Обсуждение: postgresql and C++/C
Context:FREEBSD 5.4, postgresql 8.0.3
I'm not a C newbye and I'm
having a go at compiling my first, simple C(++) program:
#include
<libpq-fe.h>
int main()
{
PGconn *psql;
psql = PQconnectdb("hostaddr =
'127.0.0.1' port = '' dbname = 'curve' user = 'vi
return 0;
}
But
when
I compile it the following message pops up:
vicbsd# gcc -I
/usr/local/include prova.cpp -o prova
/var/tmp//cceNJFrs.o(.text+0x25):
In function `main':
: undefined reference to `PQconnectdb'
/var/tmp//cceNJFrs.o(.eh_frame+0x11): undefined reference to
`__gxx_personality_v0'
What's wrong with it?
Ciao
Vittorio
On Wed, Sep 28, 2005 at 10:11:45AM +0100, vdm.fbsd@virgilio.it wrote: > > vicbsd# gcc -I Don't use gcc to compile C++. Use g++. Peter
On Wed, Sep 28, 2005 at 10:11:45AM +0100, vdm.fbsd@virgilio.it wrote: > Context:FREEBSD 5.4, postgresql 8.0.3 > > I'm not a C newbye and I'm > having a go at compiling my first, simple C(++) program: 1. If it's a C program, you should name the file .c otherwise gcc is likely to consider it a c++ program. 2. If it's a c++ program, use g++ to compile and link to make sure you get all the right libraries and paths. 3. Use -lpq to link to the postgresql client library. You may need a -L so it looks in the right place. Hope this helps, -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > tool for doing 5% of the work and then sitting around waiting for someone > else to do the other 95% so you can sue them.
Вложения
I've just modified the extension with .c instead of .cpp and run: vicbsd# gcc -I /usr/local/include/ prova.c -o prova -Lpq /var/tmp//cc86RZZl.o(.text+0x25): In function `main': : undefined reference to `PQconnectdb' Nothing seems to be changed! Thanks anyway. Vittorio ----Messaggio originale---- Da: kleptog@svana.org Data: 28-set-2005 11.44 A: "vdm.fbsd@virgilio.it"<vdm.fbsd@virgilio.it> Cc: <pgsql-general@postgresql.org> Ogg: Re: [GENERAL] postgresql and C++/C On Wed, Sep 28, 2005 at 10:11:45AM +0100, vdm.fbsd@virgilio.it wrote: > Context:FREEBSD 5.4, postgresql 8.0.3 > > I'm not a C newbye and I'm > having a go at compiling my first, simple C(++) program: 1. If it's a C program, you should name the file .c otherwise gcc is likely to consider it a c++ program. 2. If it's a c++ program, use g++ to compile and link to make sure you get all the right libraries and paths. 3. Use -lpq to link to the postgresql client library. You may need a -L so it looks in the right place. Hope this helps, -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > tool for doing 5% of the work and then sitting around waiting for someone > else to do the other 95% so you can sue them.
On Wed, Sep 28, 2005 at 10:59:04AM +0100, vdm.fbsd@virgilio.it wrote: > I've just modified the extension with .c instead of .cpp and run: > vicbsd# gcc -I /usr/local/include/ prova.c -o prova -Lpq > /var/tmp//cc86RZZl.o(.text+0x25): In function `main': > : undefined > reference to `PQconnectdb' > > Nothing seems to be changed! Pay attention to the case, it's -lpq, not -Lpq. -L is for *search paths*. Please read the documentation. http://www.postgresql.org/docs/7.4/interactive/libpq-build.html -- Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > tool for doing 5% of the work and then sitting around waiting for someone > else to do the other 95% so you can sue them.