build a shared lib