undefined reference to `is_absolute_path'
For the past few days I'm seeing this when building php on machines
where I build Postgres from cvs:
gcc -o conftest -g -O2 -L/usr/lib -Wl,-rpath,/usr/local/pgsql/lib
-L/usr/local/pgsql/lib conftest.c -lcrypt -lmm -lpspell -lpq -lmhash
-lmcrypt -lltdl -lldap -llber -lcrypt -lpam -lgmp -lfreetype -lpng -lz
-ljpeg -lz -ldb-4.0 -lgdbm -lcurl -lbz2 -lz -lssl -lcrypto -lresolv -lm
-ldl -lnsl -lcurl -lssl -lcrypto -ldl -lxml2 -lz -lm -lcrypt 1>&5
/usr/local/pgsql/lib/libpq.so: undefined reference to `is_absolute_path'
collect2: ld returned 1 exit status
It looks like is_absolute_path is function in a new file src/port/path.c.
I also see:
ar crs libpq.a fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o
fe-lobj.o pqexpbuffer.o dllist.o pqsignal.o fe-secure.o wchar.o
encnames.o ip.o md5.o
ranlib libpq.a
Doesn't path.o need to be linked in similar to the other backend files?
Joe
Joe Conway <mail@joeconway.com> writes:
Doesn't path.o need to be linked in similar to the other backend files?
Yeah. I poked Bruce about that last week, but he hasn't fixed it yet
(he was out of town last week, and might still be...). I don't have
time to deal with it now, but will apply a patch if you provide one.
regards, tom lane
Tom Lane wrote:
Yeah. I poked Bruce about that last week, but he hasn't fixed it yet
(he was out of town last week, and might still be...). I don't have
time to deal with it now, but will apply a patch if you provide one.
Not sure if there is a better fix, but this seemed to do it for me.
Joe
Attachments:
is_absolute_path-fix.patchtext/plain; name=is_absolute_path-fix.patchDownload
Index: src/interfaces/libpq/Makefile
===================================================================
RCS file: /opt/src/cvs/pgsql-server/src/interfaces/libpq/Makefile,v
retrieving revision 1.74
diff -c -r1.74 Makefile
*** src/interfaces/libpq/Makefile 29 Mar 2003 11:31:51 -0000 1.74
--- src/interfaces/libpq/Makefile 14 Apr 2003 20:17:36 -0000
***************
*** 22,28 ****
OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
pqexpbuffer.o dllist.o pqsignal.o fe-secure.o wchar.o encnames.o ip.o \
! md5.o \
$(filter getaddrinfo.o inet_aton.o snprintf.o strerror.o, $(LIBOBJS))
--- 22,28 ----
OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
pqexpbuffer.o dllist.o pqsignal.o fe-secure.o wchar.o encnames.o ip.o \
! md5.o path.o \
$(filter getaddrinfo.o inet_aton.o snprintf.o strerror.o, $(LIBOBJS))
***************
*** 48,53 ****
--- 48,56 ----
ip.c: $(backend_src)/libpq/ip.c
rm -f $@ && $(LN_S) $< .
+ path.c: $(backend_src)/../port/path.c
+ rm -f $@ && $(LN_S) $< .
+
# We use several backend modules verbatim, but since we need to
# compile with appropriate options to build a shared lib, we can't
# necessarily use the same object files as the backend uses. Instead,
***************
*** 74,78 ****
rm -f $(DESTDIR)$(includedir)/libpq-fe.h $(DESTDIR)$(includedir_internal)/libpq-int.h $(includedir_internal)/pqexpbuffer.h
clean distclean maintainer-clean: clean-lib
! rm -f $(OBJS) dllist.c md5.c ip.c wchar.c encnames.c
rm -f $(OBJS) getaddrinfo.c inet_aton.c snprintf.c strerror.c
--- 77,81 ----
rm -f $(DESTDIR)$(includedir)/libpq-fe.h $(DESTDIR)$(includedir_internal)/libpq-int.h $(includedir_internal)/pqexpbuffer.h
clean distclean maintainer-clean: clean-lib
! rm -f $(OBJS) dllist.c md5.c ip.c wchar.c encnames.c path.c
rm -f $(OBJS) getaddrinfo.c inet_aton.c snprintf.c strerror.c