Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Category:

Динамическая компоновка GHC на Linux и Windows

$ ghc -dynamic -O2 Hello.hs

$ ldd ./Hello
libHSbase-4.6.0.1-ghc7.6.3.so => /usr/lib/ghc-7.6.3/base-4.6.0.1/libHSbase-4.6.0.1-ghc7.6.3.so 

$ pacman -Qo /usr/lib/ghc-7.6.3/base-4.6.0.1/libHSbase-4.6.0.1-ghc7.6.3.so
/usr/lib/ghc-7.6.3/base-4.6.0.1/libHSbase-4.6.0.1-ghc7.6.3.so is owned by ghc 7.6.3-1

$ pacman -Qi ghc | grep Size
Installed Size : 549543.00 KiB
Короче, рантайм-библиотеки х-я ставятся на Арче в одном пакете с GHC. Для сравнения, рантайм-библиотеки GCC идут как у белых людей, в отдельном. Соответственно, написать динамически компонующуюся программу на Хаскеле и тянуть за собой 10 метров библиотек вместо пятиста - без хитростей не получится.

Падвендой ситуация даже хуже. Динамически собранный ./Hello под Линуксом запускается после сборки без особых движений, т.к. компоновщик поддерживает полные пути, и забирает сошки из нужных папок.

А вот под виндой полные пути не поддерживаются виндой. Вместо них есть SxS, который лучше и круче, и точно так же позволил бы сделать, чтобы динамически собраннные файлы запускались без телодвижений. Но в GHC поддержка SxS не реализована. Вместо этого длл-ки кладутся в те же места, что и под линуксом, что под виндой совершенно нежизнеспособно.

Короче, фейспалм, всё надо писать самому. И не надо писать что винда или дин. компоновка нинужна
Tags: все пидарасы а я
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments