We want to use libOSRM for routing. Currently we are calling its http services. For better performance, I want to call its dynamic library. When reading Haskell FFI, I guess I can compile and links its source (instead of compiled dynamic library) with my Haskell code.
1. Which method is better?
2. How can I do each alternative? 

Note that OSRM is full of structs that I am not sure how to import into haskell. c2hsc does not install (cabal raises error!). I do not know how to link the whole source of OSRM, from the other hand.