Я пытался установить платформу Haskell и cabal-install
, установленную в Linux, в пользовательском пространстве в системе, в которой не установлен пакет GNU Multi-Precision (GMP).
Мне удалось установить GHC-6.12.1 и запустить GHCi, настроив LB_LIBRARY_PATH
так, чтобы он указывал на каталог lib, куда я установил GMP, но на следующем шаге столкнулся с проблемами, заставив cabal-install
работать. Он продолжал пытаться (статически) ссылаться на GMP.
Это происходит сбой, потому что GMP не установлен в системе и ld
не имеет ни малейшего понятия, где искать библиотеки, и нет никакой переменной окружения (о которой я знаю), которая могла бы сказать ld, где найти GMP, установленный пользователем, и (по-видимому) нет способа сообщить Cabal о настройке соответствующего флага -L
.
После многих бесполезных попыток поиска и взлома я натолкнулся на нелепо простую идею установки собственного сценария оболочки ld
, который вызывает систему ld
с соответствующим флагом -L
.
Это сценарий оболочки 101, конечно:
#!/bin/sh
/usr/bin/ld -L$HOME/gnu/lib "$@"
С этим сценарием, установленным в каталоге на моем PATH
впереди /usr/bin
, все проблемы, похоже, исчезли.