Writing a module is much like writing an application. You
        have to provide the "conventional hooks" for it to work
        correctly, like pam_sm_authenticate()
        etc., which would correspond to the main()
        function in a normal function.
      
        Typically, the author may want to link against some standard system
        libraries. As when one compiles a normal program, this can be
        done for modules too: you simply append the
        -lXXX arguments
        for the desired libraries when you create the shared module object.
        To make sure a module is linked to the
        libwhatever.so library
        when it is dlopen()ed, try:
        
% gcc -shared -o pam_module.so pam_module.o -lwhatever