Программа на Haskell, построенная на Ubuntu 11.10, не работает на Ubuntu 10.04 - PullRequest
4 голосов
/ 08 сентября 2011

Я пытаюсь предоставить пользователям моей программы несколько бинарных файлов Linux в дополнение к текущим версиям Windows, поэтому я установил Ubuntu 11.10 (поскольку пакет haskell-platform на 11.04 все еще является версией 2010).Однако когда я пытаюсь запустить полученный бинарный файл в Ubuntu 10.04, я получаю сообщение, что он не может найти libgmp.so.10.Проверка / usr / lib показывает, что 10.04 поставляется с libgmp.so.3, тогда как 11.10 имеет libgmp.so.10.Следовательно, может показаться, что GHC связывается с libgmp динамически, а не статически, что, по моему мнению, было по умолчанию.

Есть ли способ сказать GHC, чтобы статически включить libgmp в двоичный файл?Если нет, то существует ли какое-либо другое решение, которое не требует от пользователя установки другой версии libgmp?

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

Оказывается, что для статического связывания двоичного файла флага -static недостаточно.Вместо этого используйте:

ghc -static -optl-static -optl-pthread --make yourfile.hs

При этом мои двоичные файлы работали корректно в обеих версиях Ubuntu.

1 голос
/ 08 сентября 2011

У вас есть опция ghc -static для статической ссылки на библиотеки.

1 голос
/ 08 сентября 2011

Часто старые пакеты libgmp также доступны;то есть, чтобы ваша программа зависела от пакета libgmp3c2 вместо универсального libgmp или libgmp10.Этого часто можно добиться, компилируя более раннюю версию GHC или gmp lib (например, установите libgmp3-dev вместо libgmp10-dev).

...