Я пытаюсь установить платформу Haskell и cabal-install
, установленную на Linux в пространстве пользователя в системе, в которой не установлен пакет GNU Multi-Precision (GMP).Использование GHC, cabal с 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 "[email protected]"
С помощью этого скрипта, установленного в каталоге на моем PATH
впереди /usr/bin
все проблемы, кажется, ушли.
Для тех людей, которые уже установлены GHC в директории пользователя, они будут в состоянии выполнить последнюю команду с Судом. Когда я вручную редактировал rts.pkg, я не знал, какой тип разделителя полей используется, поэтому я просто поместил дополнительный каталог библиотеки на свою собственную строку после оригинала. – Emanuel
Разделитель для этих библиотек - просто пространство. –
Скопируйте файл libgmp.so в один из 'include-dirs', например. '/ Дома/Дилавар/бен/Библиотека/GHC-7.8.3/ртс-1.0'. Это сработало для меня. – Dilawar