RE: Enlazar con las librerias de postgresql.

2000-06-25 Por tema Ricardo Villalba

-Mensaje original-
De: Rafael Eduardo Martín Candial [EMAIL PROTECTED]
Para: 'debian-user-spanish@lists.debian.org'
debian-user-spanish@lists.debian.org
Fecha: viernes 23 de junio de 2000 21:45
Asunto: Enlazar con las librerias de postgresql.


Hola a todos:

He instalado el postgresql para hacer una pequeña aplicación que acceda
a una base de datos
y me he encontrado con que no puedo enlazar con las librerias de la
base de datos.

En el directorio /usr/lib tengo las siguientes:
libpq++.a
libpq++.so - libpq++.so.2.0
libpq++.so.2.0
libpq.a
libpq.so - libpq.so.2.0
libpq.so.2.0
[...]
Pero al compilar da estos errores.

gcc  -L/usr/lib/  -I/usr/include/pgsql example1.cpp

/tmp/ccxeEA2h.o: In function `exit_nicely(pg_conn *)':
/tmp/ccxeEA2h.o(.text+0x8): undefined reference to `PQfinish'
/tmp/ccxeEA2h.o: In function `main':
[...]
/tmp/ccxeEA2h.o(.text+0x307): undefined reference to `PQfinish'
collect2: ld returned 1 exit status


Me imagino que te falta la opción -lpq (para que enlace con libpq.so).

--
Ricardo Villalba
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://members.xoom.com/rvmsoft




Re: Enlazar con las librerias de postgresql.

2000-06-24 Por tema Antonio Castro
On Fri, 23 Jun 2000, Rafael Eduardo Martín Candial wrote:

 Hola a todos:
 
 He instalado el postgresql para hacer una pequeña aplicación que acceda a una 
 base de datos
 y me he encontrado con que no puedo enlazar con las librerias de la base de 
 datos.
 
 En el directorio /usr/lib tengo las siguientes:
 libpq++.a  
 libpq++.so - libpq++.so.2.0  
 libpq++.so.2.0  
 libpq.a   
 libpq.so - libpq.so.2.0 
 libpq.so.2.0
 
 En el fichero fuente hay estos includes:
 #include stdio.h
 #include postgres.h
 #include libpq-fe.h
 
 Pero al compilar da estos errores. 
 
 gcc  -L/usr/lib/  -I/usr/include/pgsql example1.cpp 


 gcc  -lpq -lcrypt   -I/usr/include/pgsql example1.cpp 

Creo que bastaría con esto. (No estoy seguro de si lcrypt es necesario,
prueba a quitarlo).


 /tmp/ccxeEA2h.o: In function `exit_nicely(pg_conn *)':
 /tmp/ccxeEA2h.o(.text+0x8): undefined reference to `PQfinish'
 /tmp/ccxeEA2h.o: In function `main':
 /tmp/ccxeEA2h.o(.text+0x66): undefined reference to `PQsetdbLogin'
 /tmp/ccxeEA2h.o(.text+0x77): undefined reference to `PQstatus'
 /tmp/ccxeEA2h.o(.text+0xa1): undefined reference to `PQerrorMessage'
 /tmp/ccxeEA2h.o(.text+0xd4): undefined reference to `PQexec'
 /tmp/ccxeEA2h.o(.text+0xe5): undefined reference to `PQresultStatus'
 /tmp/ccxeEA2h.o(.text+0x10b): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x123): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x134): undefined reference to `PQexec'
 /tmp/ccxeEA2h.o(.text+0x145): undefined reference to `PQresultStatus'
 /tmp/ccxeEA2h.o(.text+0x16b): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x183): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x194): undefined reference to `PQexec'
 /tmp/ccxeEA2h.o(.text+0x1a5): undefined reference to `PQresultStatus'
 /tmp/ccxeEA2h.o(.text+0x1cb): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x1e3): undefined reference to `PQnfields'
 /tmp/ccxeEA2h.o(.text+0x209): undefined reference to `PQfname'
 /tmp/ccxeEA2h.o(.text+0x245): undefined reference to `PQntuples'
 /tmp/ccxeEA2h.o(.text+0x27d): undefined reference to `PQgetvalue'
 /tmp/ccxeEA2h.o(.text+0x2b7): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x2c8): undefined reference to `PQexec'
 /tmp/ccxeEA2h.o(.text+0x2d9): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x2ea): undefined reference to `PQexec'
 /tmp/ccxeEA2h.o(.text+0x2fb): undefined reference to `PQclear'
 /tmp/ccxeEA2h.o(.text+0x307): undefined reference to `PQfinish'
 collect2: ld returned 1 exit status
 
 
 ¿ALGUIEN PUEDE AYUDARME?
 Quiero configurar un entorno para compilar aplicaciones que accedan a 
 postgresql.
 Los fuentes de mis programas en un directorio.
 Los ejecutables reultantes de la compilacion los quiero en otro directorio.
 Los objetos quiero que se almacenen en un ditectorio.
 Vamos, una esructura semejenate a esta:
 
 ~/fuentes/source
 ~/fuentes/include
 ~/bin
 ~/obj
 ~/scr/mak
 ~/scr/sh

Que pongas todos los binarios y los objetos en un mismo sitio pase
pero los source, include y los mak deberían estar organizados por
proyecto.

~/src/proyeto1
~/src/proyeto2
~/src/proyeto3

En cada proyecto tendrías los *.c *.h *.mak y cualquier otra cosa
que requiera ese proyecto. Bueno es solo una idea y ya se que no es 
perfecta. Por ejemplo puede ocurrir que un fuente se use para varios
proyectos. Lo que yo habo es usar links simbolicos para mantener un
solo fuente pero hay que ser conscientes de que si se modifica un
fuente común se veran afectados varios proyectos. 

 
 En source los fuentes y los ficheros de cabecera en include.
 los cobjetos generados en la compilacion  en obj
 en bin los programas generados.
 en mak las macros de compilacion.
 y en sh las shell de ejecucion.
 
 Necesito ayuda mara crear un .mak que haga todo esto y enlace con las 
 librerias de la base de datos.
 

Bueno ajustandome a lo que tu preguntabas sería una cosa así. No
lo tomes al pie de la letra. Solo espero que te sirva de orientación
y estudiate el comando make.

OBJS = ~/obj/modulo1.o ~/obj/example1.o

~/bin/example1: $(OBJS)
gcc $(OBJS)  -lpq -lcrypt  -o ~/bin/example1

~/obj/modulo1.o: ~/fuentes/include/modulo1.h ~/fuentes/source/modulo1.c
gcc ~/fuentes/source/modulo1.c  -c  -I/usr/include/postgresql

~/obj/example1.o: ~/fuentes/source/example1.c
gcc ~/fuentes/source/example1.c  -c  -I/usr/include/postgresql

clean:
rm -f $(OBJS)


 Un saludo a todos, y gracias de antemano.
 
 Rafael Martín.
 
 
 
 --
 Unsubscribe?  mail -s unsubscribe [EMAIL PROTECTED]  /dev/null

Saludos

Antonio


+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
/\ /\ Ciberdroide Informatica (tienda linux)
  \\W// http://www.ciberdroide.com 
 _|0 0|_
+-oOOO--(___o___)--OOOo--+ 

Enlazar con las librerias de postgresql.

2000-06-23 Por tema Martín
Hola a todos:

He instalado el postgresql para hacer una pequeña aplicación que acceda a una 
base de datos
y me he encontrado con que no puedo enlazar con las librerias de la base de 
datos.

En el directorio /usr/lib tengo las siguientes:
libpq++.a  
libpq++.so - libpq++.so.2.0  
libpq++.so.2.0  
libpq.a 
libpq.so - libpq.so.2.0 
libpq.so.2.0

En el fichero fuente hay estos includes:
#include stdio.h
#include postgres.h
#include libpq-fe.h

Pero al compilar da estos errores. 

gcc  -L/usr/lib/  -I/usr/include/pgsql example1.cpp 

/tmp/ccxeEA2h.o: In function `exit_nicely(pg_conn *)':
/tmp/ccxeEA2h.o(.text+0x8): undefined reference to `PQfinish'
/tmp/ccxeEA2h.o: In function `main':
/tmp/ccxeEA2h.o(.text+0x66): undefined reference to `PQsetdbLogin'
/tmp/ccxeEA2h.o(.text+0x77): undefined reference to `PQstatus'
/tmp/ccxeEA2h.o(.text+0xa1): undefined reference to `PQerrorMessage'
/tmp/ccxeEA2h.o(.text+0xd4): undefined reference to `PQexec'
/tmp/ccxeEA2h.o(.text+0xe5): undefined reference to `PQresultStatus'
/tmp/ccxeEA2h.o(.text+0x10b): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x123): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x134): undefined reference to `PQexec'
/tmp/ccxeEA2h.o(.text+0x145): undefined reference to `PQresultStatus'
/tmp/ccxeEA2h.o(.text+0x16b): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x183): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x194): undefined reference to `PQexec'
/tmp/ccxeEA2h.o(.text+0x1a5): undefined reference to `PQresultStatus'
/tmp/ccxeEA2h.o(.text+0x1cb): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x1e3): undefined reference to `PQnfields'
/tmp/ccxeEA2h.o(.text+0x209): undefined reference to `PQfname'
/tmp/ccxeEA2h.o(.text+0x245): undefined reference to `PQntuples'
/tmp/ccxeEA2h.o(.text+0x27d): undefined reference to `PQgetvalue'
/tmp/ccxeEA2h.o(.text+0x2b7): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x2c8): undefined reference to `PQexec'
/tmp/ccxeEA2h.o(.text+0x2d9): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x2ea): undefined reference to `PQexec'
/tmp/ccxeEA2h.o(.text+0x2fb): undefined reference to `PQclear'
/tmp/ccxeEA2h.o(.text+0x307): undefined reference to `PQfinish'
collect2: ld returned 1 exit status


¿ALGUIEN PUEDE AYUDARME?
Quiero configurar un entorno para compilar aplicaciones que accedan a 
postgresql.
Los fuentes de mis programas en un directorio.
Los ejecutables reultantes de la compilacion los quiero en otro directorio.
Los objetos quiero que se almacenen en un ditectorio.
Vamos, una esructura semejenate a esta:

~/fuentes/source
~/fuentes/include
~/bin
~/obj
~/scr/mak
~/scr/sh

En source los fuentes y los ficheros de cabecera en include.
los cobjetos generados en la compilacion  en obj
en bin los programas generados.
en mak las macros de compilacion.
y en sh las shell de ejecucion.

Necesito ayuda mara crear un .mak que haga todo esto y enlace con las librerias 
de la base de datos.


Un saludo a todos, y gracias de antemano.

Rafael Martín.




Re: Enlazar con las librerias de postgresql.

2000-06-23 Por tema David Muriel
Rafael Eduardo Martín Candial [EMAIL PROTECTED] writes:

[...]

 libpq++.a  
 libpq.a   

[...]

 gcc  -L/usr/lib/  -I/usr/include/pgsql example1.cpp 

Creo que te falta poner -lpq y -lpq++ al final de esta linea.  Para
que el compilador enlace tu programa con las librerias que necesitas
se lo tienes que decir, no basta con decirle donde están, también le
tienes que decir con cuales enlazar.  La linea quedaría así:

$ gcc -L/usr/lib -I/usr/include/pgsql example1.cpp -lpq -lpq++

 /tmp/ccxeEA2h.o: In function `exit_nicely(pg_conn *)':
 /tmp/ccxeEA2h.o(.text+0x8): undefined reference to `PQfinish'
 /tmp/ccxeEA2h.o: In function `main':
 /tmp/ccxeEA2h.o(.text+0x66): undefined reference to `PQsetdbLogin'
 /tmp/ccxeEA2h.o(.text+0x77): undefined reference to `PQstatus'
 /tmp/ccxeEA2h.o(.text+0xa1): undefined reference to `PQerrorMessage'

[...]

Todo esto es precisamente porque no encuentra el código que contiene
esas funciones, y que es precisamente el que se encuentra en las
librerías con las que tienes que enlazar.

 ¿ALGUIEN PUEDE AYUDARME?
 Quiero configurar un entorno para compilar aplicaciones que accedan
 a postgresql.
 Los fuentes de mis programas en un directorio.
 Los ejecutables reultantes de la compilacion los quiero en otro directorio.
 Los objetos quiero que se almacenen en un ditectorio.
 Vamos, una esructura semejenate a esta:
 
 ~/fuentes/source
 ~/fuentes/include
 ~/bin
 ~/obj
 ~/scr/mak
 ~/scr/sh
 
 En source los fuentes y los ficheros de cabecera en include.
 los cobjetos generados en la compilacion  en obj
 en bin los programas generados.
 en mak las macros de compilacion.
 y en sh las shell de ejecucion.
 
 Necesito ayuda mara crear un .mak que haga todo esto y enlace con
 las librerias de la base de datos.

Prueba con `info make'.  Ahí te explica todo lo que hace falta para
crear los makefiles.

Hasta luego.

-- 

David Muriel.
Debian GNU/Linux woody + Emacs 20.5.2 + Gnus v5.8.3
Linux registered user #25632 (http://counter.li.org/)


...El trabajo en equipo es esencial...te permite echarle la culpa a otro