Нечасто, что две вещи, которые я так люблю, объединяются и вызывают у меня столько раздражения (помимо моих детей). Я написал программу на Haskell на работе, которая использует библиотеки, такие как text, xml-enumerator, attoparsec-text и т. Д. У меня он работает нормально на моей машине с Windows на работе, моей виртуальной машине Ubuntu на работе (32-разрядной), моем рабочем столе Ubuntu (снова 32-разрядной версии) и экземпляре EC2 под управлением Ubuntu (64-разрядной версии).
Наш клиент работает под управлением CentOS 5.3, 64-бит. Я не могу, хоть убей, заставить этот исполняемый файл работать правильно. Я попытался создать статический исполняемый файл, используя:
ghc --make myprog.hs -optl-static -optl-pthread
Но когда я пытаюсь запустить этот исполняемый файл на сервере CentOS, я получаю сообщение об ошибке:
openFile: invalid argument (Invalid argument)
Я предполагаю, что это связано с ошибкой, описанной здесь . Я пробовал компилировать как из 32, так и из 64-битной Ubuntu, пробовал статические и общие сборки, ничего не работает (хотя иногда я получаю segfaults вместо вышеуказанного сообщения об ошибке). Я могу попробовать загрузить CentOS 5.3 и создать для него виртуальную машину, но загрузка займет некоторое время, и я ' Я не уверен, какая версия GHC будет работать на нем (я пытался установить GHC 7 на их сервер, но столкнулся с проблемой libc).
На данный момент я придумал несколько возможных подходов, но я Я бы хотел избежать этого, если это вообще возможно:
] В целом, это ситуации, когда я действительно хотел бы, чтобы у нас был бэкэнд JVM для GHC. Полагаю, я мог бы также попробовать LambdaVM. Но я бы хотел услышать советы сообщества о том, что здесь делать.