I modified the Makefile a bit and it all works now:

MODULES = foo
MODULE_big = bar
OBJS = bar.o foo.so
EXTENSION = foo bar

One thing that's still a bit confusing, though ... I build the extensions
in my own home dir, which results in the rpath getting set like
this: -Wl,-rpath,'/vol/data/home/sscheck/sandbox/postgresql-9.2.4-build/lib'

But I do "make install" from the same directory, but logged in as the
postgres user under which I run my server(s). Does the rpath get embedded
into the .so's? If so I don't see why it works, but it does...

Thanks!
-Steve


On Thu, Jun 13, 2013 at 7:38 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> Stephen Scheck <singularsyn...@gmail.com> writes:
> > [postgres@dev1 lib]$ ldd bar.so
> >         linux-vdso.so.1 =>  (0x00007fff1c7ff000)
> >         libc.so.6 => /lib64/libc.so.6 (0x00007fa4c96ac000)
> >         /lib64/ld-linux-x86-64.so.2 (0x00007fa4c9c5d000)
>
> So you're missing any reference to foo.so; not surprising it fails.
> You need to make sure that "-lfoo" or something similar gets into the
> link command for bar.so.  You might still have some rpath issues after
> that, but right now the runtime linker doesn't even know it should be
> loading foo.so.
>
> > After digging into the PGXS docs a bit more, I think if I change the
> > Makefile a bit this may work:
>
> > MODULES = foo bar
> > MODULE_big = bar
> > OBJS = bar.o
> > SHLIB_LINK = foo.o
>
> Oh, you're trying to build two separate shlibs in one Makefile?  I don't
> think that our Makefile infrastructure is smart enough to handle that,
> at least not if cross-references are required.  You'd probably be well
> advised to split them into two separate source-code directories.
>
> Another question worth asking yourself, if you are building like this,
> is why you're bothering with two .so's at all.  Is there a strong reason
> not to just make them into one library?
>
>                         regards, tom lane
>

Reply via email to