postgresql and C++/C

Started by vdm.fbsd@virgilio.itover 20 years ago5 messagesgeneral
Jump to latest
#1vdm.fbsd@virgilio.it
vdm.fbsd@virgilio.it

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

#2Peter Wiersig
peter@friesenpeter.de
In reply to: vdm.fbsd@virgilio.it (#1)
Re: postgresql and C++/C

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

#3Martijn van Oosterhout
kleptog@svana.org
In reply to: vdm.fbsd@virgilio.it (#1)
Re: 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/

Show quoted text

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.

#4vdm.fbsd@virgilio.it
vdm.fbsd@virgilio.it
In reply to: Martijn van Oosterhout (#3)
Re: postgresql and C++/C

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

Show quoted text

else to do the other 95% so you can sue them.

#5Martijn van Oosterhout
kleptog@svana.org
In reply to: vdm.fbsd@virgilio.it (#4)
Re: postgresql and C++/C

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/

Show quoted text

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.