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------------------------------------------------------+ | . . . . U U . . . . Antonio Castro Snurmacher !! Nueva direccion email !! | | http://slug.ctv.es/~acastro. -> -> -> -> [EMAIL PROTECTED] | +()()()----------()()()------------------------------------------------------+ +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ (((Donde Linux))) http://www.ciberdroide.com/misc/donde/dondelinux.html +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+