generate shared library