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 >