2011-07-09 7 views
5

Estoy intentando compilar el paquete double-conversion de Hackage. Construye bien pero ghci no puede cargarlo. La queja es:Símbolo no definido en un paquete de Hackage `conversión doble`

Loading package double-conversion-0.2.0.0 ... linking ... <interactive>: 
/home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o: 
unknown symbol `_ZNK17double_conversion6Double5valueEv' 

La salida nm muestra que el símbolo es débil:

nm /home/me/.cabal/lib/double-conversion-0.2.0.0/ghc-7.0.4/HSdouble-conversion-0.2.0.0.o \ 
    | grep _ZNK17double_conversion6Double5valueEv 
00000000 W _ZNK17double_conversion6Double5valueEv 

Este es el único símbolo débil en el archivo, y de hecho, por lo que yo puedo decir, en el mundo entero de paquetes compilados por GHC.

La función problemática es aparentemente una FFI, escrita en C++ y definida en línea en double-conversion/src/double.h. No es la única función en línea allí, pero solo esta se etiqueta como débil.

Como medida provisional, he movido la función fuera de línea y el paquete ahora se carga. Pero obviamente hay algún problema en algún lugar allí. ¿Por qué esta función es débil? ¿Por qué otras funciones no lo son? ¿Debería ghc quejarse de símbolos débiles? ¿Debo presentar una falla y, de ser así, quién debería obtenerla (conversión doble, gcc, ghc, otra persona?)

Datos del sistema: Gentoo Linux, gcc-4.4.5, ghc-7.0.4, cabal -1.10.2.0.

+0

¿Qué error obtienes si intentas instalar 'text-format'? ¿Tal vez Yesod intenta usar doble conversión de Template Haskell? –

+0

¿Ha intentado usar la plantilla? – alternative

+0

@monadic: en realidad estoy usando la superposición, solo después de que falló probé la instalación local 'cabal '. El mensaje de error es el mismo @Mikhail Glushenkov: en realidad puedo instalar 'text-format', pero no' yesod'. El mensaje de error es el mismo –

Respuesta

1

Este boleto en GHC Trac parece relevante: Can't use ghci with a library linked against libstdc++. Esto parece un problema específico de Gentoo (o posiblemente GCC 4.4) - el archivo .o en cuestión no contiene ningún símbolo débil en mi sistema (lo probé en Ubuntu Natty con GCC 4.5.2 & GHC 7.0.3/7.0. 4). Le sugiero que presente un boleto en GHC Trac. Por cierto, puedo reproducir # 5289.

+0

Esto no es solo GHCi. Los paquetes que dependen de 'doble conversión 'tampoco se instalan (en última instancia, estoy intentando construir' yesod'). El mensaje de error también es diferente. –

+1

¡Interesante! 'cabal install text-conversion' funciona para mí, por lo que este es probablemente un problema específico de Gentoo. 'nm' no muestra ningún símbolo débil en' HSdouble-conversion-0.2.0.0.o' en mi sistema. –

+0

qué versión de ghc y gcc usas? –

Cuestiones relacionadas