Thread: undefined reference to `is_absolute_path'

undefined reference to `is_absolute_path'

From
Joe Conway
Date:
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



Re: undefined reference to `is_absolute_path'

From
Tom Lane
Date:
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



Re: undefined reference to `is_absolute_path'

From
Joe Conway
Date:
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
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