2013-04-22 18 views
8

Czy jest jakiś sposób na utworzenie autonomicznego pliku wykonywalnego haskell do uruchamiania na różnych maszynach linuksowych, zakładając, że architektura jest podobna?Czy jest możliwe wyprodukowanie samodzielnego pliku wykonywalnego haskell?

Przepraszam, że powinienem być jaśniejszy. Inne komputery mogą nie mieć zainstalowanego na nich ghc - tak jak szukałem Pyinstalatora dla Pythona?

+0

jest tym http://www.yesodweb.com/blog/2012/03/shelly-for-shell-scripts czego szukasz? – xhudik

Odpowiedz

11

Możesz użyć flag -static -optl-pthread -optl-static, aby uniknąć dynamicznie powiązanych zależności podczas kompilowania projektu Haskell. To powinno pomóc w uruchomieniu skompilowanego pliku wykonywalnego na dwóch maszynach z systemem Linux, które nie mają dokładnie tych samych wersji bibliotek.

+0

I'll give it a go - dzięki – opensourcegeek

+0

Nigdy nie miałem szczęścia z ghc i statycznego linkowania, więc jestem ciekawy, jak dobrze to działa dla ciebie (i shang). Na przykład w Fedorze potrzebujesz bibliotek statycznych ('yum install glibc-static'), ale nadal istnieje problem z wywoływaniem dTS. –

3

Tak, jest to możliwe. Podobnie jak w przypadku plików binarnych wyprodukowanych przez gcc, możesz je skopiować między systemami, zakładając, że biblioteki dynamiczne i platformy są zgodne.

W praktyce jest to nieco wyższy pasek niż pliki binarne GCC, ponieważ GHC będzie dynamicznie łączył więcej bibliotek domyślnie (np. Libgmp, chyba że zbudujesz GHC używając liczb całkowitych prostych).

Powiązane problemy