He intentado instalar Haskell Platform y cabal-install
instalados en Linux en el espacio de usuario de un sistema que no tiene instalado el paquete GNU Multi-Precision (GMP).Uso de GHC, cabal con GMP instalado en el espacio de usuario
Logré instalar GHC-6.12.1 y GHCi trabajando configurando LB_LIBRARY_PATH
para apuntar al directorio lib donde instalé GMP, pero luego me encontré con problemas en el siguiente paso, obteniendo cabal-install
para que funcione. Siguió intentando vincular (estáticamente) con GMP.
Esto falla porque el GMP no está instalado en el sistema y ld
no tiene ni idea de dónde encontrar las bibliotecas, y no hay una variable de entorno (que yo sepa) que pueda indicarle dónde encontrar al usuario -instalado GMP, y (aparentemente) no hay manera de decirle a la configuración de Cabal que suministre la bandera relevante -L
.
Después de una búsqueda infructuosa y de intentos de pirateo, llegué a la idea absurdamente simple de instalar mi propio script de shell ld
que invoca el sistema ld
con el indicador -L
correspondiente.
Esta es shell scripting 101, por supuesto:
#!/bin/sh
/usr/bin/ld -L$HOME/gnu/lib "[email protected]"
Con este script instalado en un directorio en mi PATH
por delante de /usr/bin
todos los problemas parecen haber desaparecido.
Para aquellas personas que hayan instalado GHC en un directorio de usuario, que va a ser capaz de ejecutar el último comando con sudo. Cuando edité manualmente el rts.pkg, no sabía qué tipo de campo separater cabal utilizaba, así que simplemente puse el directorio de biblioteca adicional en su propia línea después del original. – Emanuel
El separador para estos directorios de biblioteca es solo espacio. –
Copie libgmp.so a uno de los 'include-dirs', p. '/ home/dilawar/bin/lib/ghc-7.8.3/rts-1.0'. Funcionó para mí – Dilawar