I use haskell to create a .so .but the .so needs too much depends

Right, you would need to recompile all dependencies so they can be included this way, which may be pretty painful. As an alternative, I have often distributed Haskell libraries/executables together with their shared libraries in the past. If the user (or installer) sets LD_LIBRARY_PATH correctly, is should be a pretty smooth process.