Re: writing a foreign data wrapper for hdfs, but getting and undefined symbol error for hdfsConnect

From: "Rob_pg" <robert7390(at)comcast(dot)net>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: writing a foreign data wrapper for hdfs, but getting and undefined symbol error for hdfsConnect
Date: 2011-10-25 21:24:47
Message-ID: 201110251424.47272.robert7390@comcast.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Tom,

Thanks for the tip, I altered the gcc invocation as follows:

Here are the two gcc invocations originally creating the shared library:

gcc -Wall -fPIC -c mylibrary.c -o mylibrary.o \
-I $(A) -I $(B) -I $(C) -I $(E) -lhdfs

gcc -I $(A) -I $(B) -I $(C) -I $(E) -shared\
-Wl,-soname,mylibrary.so -o mylibrary.so mylibrary.o

#############################
Here's the new invocations: I added "-lhdfs" to the second gcc invocation.

gcc -I $(A) -I $(B) -I $(C) -I $(E) -shared\
-lhdfs -Wl,-soname,mylibrary.so -o mylibrary.so mylibrary.o

Now I can see the libraries!

ldd mylibrary.so
linux-vdso.so.1 => (0x00007fff499c5000)
libhdfs.so.0 => /usr/lib/libhdfs.so.0 (0x00007f44e4739000)
libc.so.6 => /lib/libc.so.6 (0x00007f44e43b6000)
libjvm.so => /usr/lib/jvm/java-6-
openjdk/jre/lib/amd64/server/libjvm.so (0x00007f44e3866000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f44e3662000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f44e3445000)
/lib64/ld-linux-x86-64.so.2 (0x00007f44e4b66000)
libm.so.6 => /lib/libm.so.6 (0x00007f44e31c1000)

> "Rob_pg" <robert7390(at)comcast(dot)net> writes:
> > I've been working on creating a foreign data wrapper for hdfs on using
> > version 9.1.0. This is my first time creating C functions against
> > postgres, so hopefully this falls under the 'newbie' category and is
> > easy to solve.
> >
> > The source code code does compile resulting in a shared library:
> >
> > file mylibrary.so: ELF 64-bit LSB shared object, x86-64, version 1
> > (SYSV), dynamically linked, not stripped
> >
> > ldd mylibrary.so
> >
> > linux-vdso.so.1 => (0x00007fff40fff000)
> > libc.so.6 => /lib/libc.so.6 (0x00007f3adb8cc000)
> > /lib64/ld-linux-x86-64.so.2 (0x00007f3adbe72000)
>
> The reason it's not working is that libhdfs.so isn't listed as a
> requirement for mylibrary.so. You did not show us your link command
> for mylibrary.so, but most likely there needs to be a -lhdfs in it.
>
> regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message david.sahagian 2011-10-25 21:28:40 explicit deadlock-victim-priority mechanism
Previous Message Tom Lane 2011-10-25 21:20:16 Re: missing chunk 0 for toast value ...