RE: Enlazar con las librerias de postgresql.
-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.
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.
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.
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