2010-12-05 41 views
6

Comment puis-je compiler un programme (Haskell) pour qu'il ne nécessite pas de DLL?Comment créer un programme pour qu'il ne nécessite pas de DLL

J'ai écrit un programme qui utilise GLUT et nécessite glut32.dll. Je l'ai compilé avec ghc --make program.hs. Maintenant, je veux distribuer mon programme, mais je ne veux pas qu'il nécessite des DLL (donc je peux juste donner le .exe aux utilisateurs). J'ai essayé de compiler avec ghc -static --make program.hs mais cela n'a pas fonctionné, j'obtiens toujours "l'erreur d'utilisateur (GLUT entry glutInit inconnu)".

Comment est-ce que je peux faire ceci?

+0

Voir aussi http://stackoverflow.com/questions/5953199/create-a-static-haskell-linux-executable –

Répondre

3

Ceci n'est possible que si GLUT fournit une version statique de la bibliothèque (cela pourrait s'appeler quelque chose comme glut32s.lib mais il n'est pas nécessaire qu'ils l'appellent quelque chose en particulier).

Le succès de cette approche dépendra également du fait que GHC autorise ou non la liaison avec des bibliothèques statiques externes. La page de manuel pour ghc indique que -static s'applique uniquement aux bibliothèques Haskell, pas aux autres bibliothèques externes.

2

En supposant que vous avez des versions statiques des bibliothèques C nécessaires, vous pouvez créer une Haskell statique exécutable avec:

ghc -O2 --make -static -optc-static -optl-static A.hs -fvia-C 

qui assure à la fois les composants Haskell et les composants C seront liés statiquement, via le C toolchain .