Это хороший обходной путь для моего варианта использования, но ошибка все еще существует.

сто две вещи, которые я так люблю, собираются вместе, чтобы вызвать у меня столько раздражения (помимо моих детей). На работе я написал программу на Haskell, в которой используются такие библиотеки, как text, xml-enumerator, attoparsec-text и т. Д. У меня она работает нормально на моей машине с Windows на работе, на моей виртуальной машине Ubuntu на работе (32-битной), мой Рабочий стол Ubuntu (снова 32-разрядный) и экземпляр EC2 под управлением Ubuntu (64-разрядный).

Наш клиент работает под управлением CentOS 5.3, 64-bit. Я не могу на всю жизнь заставить этот исполняемый файл работать должным образом. Я попытался создать статический исполняемый файл, используя:

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; если люди имеют опыт и знают, что текст / attoparsec / и т. д. работает в jhc, я бы с удовольствием это услышал.Взломать все хаки: собрать исполняемый файл Windows, установить Wine на их сервер и запустить его таким образом.

В целом, это ситуации, когда ядействительно Жаль, что у нас не было бэкэнда JVM для GHC. Я полагаю, я мог бы также попробовать LambdaVM. Но я хотел бы услышать совет сообщества о том, что делать здесь.

Ответы на вопрос(3)

Ваш ответ на вопрос