2015-07-21 11 views
11

Предположим, что я написал код Haskell и скомпилировал его в 64-битной установке Ubuntu, статически связав все пакеты Haskell и библиотеки c. Будет ли результат бинарным, совместимым с любым другим 64-битным дистрибутивом Linux?Совместимость двоичных файлов Haskell

+1

Должно быть, см., Например, http://stackoverflow.com/a/10549484/477476 и http://stackoverflow.com/a/5953787/477476 – Cactus

+0

Вау, двоичный файл, полученный из 'ghc -02 test.hs -optl-static -optl-pthread 'составляет около 2,5 ГБ (test.hs содержит' main = print "yes" '). –

+1

фактически 2.5MB. Кто-то не может читать вывод 'ls' haha –

ответ

1

Да, из-за статической связи - это все в двоичном формате. И да, они могут стать довольно большими, например, выход Yesod может легко до 70 МБ. Тем не менее, он имеет HTTP-сервер в пределах 70 МБ.

Таким образом, статическое связывание может, таким образом, способствовать переносимости, но имеет свои недостатки с точки зрения размера исполняемого файла.