James Stevens wrote: > > > Does jsm.so itself linked with -lpam? (it should be, or else jabberd will be > > unable to load it, yes?) > > jsm.so is linked with "-lpam" - as it does make PAM calls. > > > Or maybe > > jabberd loads the jsm.so without adding symbols from it (and it's dependant > > libs) to the main symbol list (RTDL_something flag for dlopen())? [ RTLD_GLOBAL ] > This sound like it could a solution - but, again, only is you have access to > all the source. Linking "jabberd" with "-lpam", also works, but is a bit of a > messy solution. I've recently committed a shared library object to the Linux-PAM source tree to address this sort of issue. It builds as pam.so. You can dlopen() it and have it behave as you were expecting libpam.so would. Look in the 'dynamic' directory: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/pam/Linux-PAM/dynamic/ > However, surly, if a PAM module make a call into "libpam" it should be linked > with "-lpam" ? The problem with this is that I want the modules to work unchanged with different PAM like libraries - for example libpamd which has more debugging information available. By hard linking the library in the way you indicate, this feature is not available. Finally, when building the modules, if you want to statically build in a module into libpam.so you need to build the module before you build the library, and as such libpam.so isn't available when you build the module in the source tree. Cheers Andrew