Не часто две вещи, которые я так люблю, собираются вместе, чтобы вызывать у меня столько раздражения (кроме моих детей).На работе я написал программу на 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).
На данный момент я придумала несколько возможных подходов, но я бы хотела избежать их, если это возможно:
- Переписатьна другом языке (мысль о том, чтобы сделать это в Java, вызывает у меня тошноту, хотя это может быть хорошее время, чтобы попробовать Cal / OpenQuark).
- Возможно, попробуйте альтернативный компилятор, например jhc.Но я не совсем уверен, как начать установку всех зависимостей для этой программы в jhc;если у людей есть опыт и они знают, что text / attoparsec / etc работает в jhc, я бы хотел услышать это.
- Взломать все хаки: собрать исполняемый файл Windows, установить Wine на свой сервер и запустить его таким образом..
В целом, это ситуации, когда мне действительно хотелось бы иметь бэкэнд JVM для GHC.Я полагаю, я мог бы также попробовать LambdaVM.Но я хотел бы услышать совет сообщества о том, что делать здесь.