Just did what you suggested and everything works as expected. You're right, I tried installing from source without specifying the VPATH at first and then realize that I already have postgres installed from package manager and decided to install in a different directory.
So what I ended up doing was I re-cloned the source directory and deleted the build directory and start from scratch.
Dennis Suratna <dennis.suratna@gmail.com> writes: > And I got the same error. I have attached the full make output to this > reply.
Well, this is pretty interesting:
make -C src all make[1]: Entering directory '/home/dennis/workspace/pgsql_build/src' make -C common all make[2]: Entering directory '/home/dennis/workspace/pgsql_build/src/common' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/home/dennis/workspace/pgsql_build/src/common'
"make" didn't find anything to do there. However, digging through the rest of the make log, I find that the backend link went through successfully with
that is, something in your source tree not your build tree.
Extrapolating, I'd guess that you have a partial build laying about in your source tree that includes libpgcommon_shlib.a, and depending on just how a particular Makefile is worded, the VPATH mechanism might find that file when libpgcommon_shlib.a is asked for; it's certainly enough to discourage make itself from building a new copy in the build tree. But the linker doesn't know enough to find that from "-lpgcommon_shlib".
In short, you need to clean out your source tree before trying to do a VPATH build. If using git, "git clean -dfx" would do it. Otherwise you might be best advised to blow away the tree and re-extract the tarball you started from.