All dynamically loaded modules (and anything statically linked into them) must be compiled with Position Independent Code. This means that if you link any static libraries (even if they are system-wide or 3rd party libraries) that are not position independent you must recompile them with the appropriate options.
For various reasons that are as yet unknown the linking of libraries (shared or static) to application modules is very finicky. If you link the wrong libraries in then the server will seg fault at request time due (I think) to conflicting global objects. If you fail to link certain libraries in then the application module will fail to load at request time due to unresolved symbols.
I will update this page as soon as I figure out why this linker behavior is so strange but for now you may just have to use trial and error to determine the correct libraries to link or not link.