2010-07-23 12 views
5

Estoy tratando de tomar mi proyecto Haskell y dividirlo en una biblioteca y un conjunto de ejecutables que dependen de la biblioteca. Cuando intento compilar ahora me sale el siguiente error:Haskell Bad Interface File

src/Main.hs:23:0: 
    Bad interface file: /Users/<MyHomeDir>/.cabal/lib/Core-0.0.1/ghc-6.12.1/<MyModule>.hi 
     mismatched interface file ways (wanted "", got "p") 

creo que el p podría ser la bandera p relacionada con los paquetes de GHC. ¿Es esto correcto? ¿Necesito agregar más opciones de configuración en algún lugar a mi archivo cabal para apoyar esto?

Respuesta

2

Eso significa que encontró una compilación de creación de perfiles, pero está compilando Main.hs sin perfiles habilitados. Soluciones rápidas:

  • Habilitar perfiles en la construcción de Main.hs
  • construir e instalar <MyModule> con perfiles habilitados

De cualquier manera, que comenzará con un comando similar

$ runghc Setup.hs configure --enable-library-profiling
3

Encontré un problema similar al compilar ejecutables con enlace dinámico.

Recopilé una biblioteca y un ejecutable invocando cabal install --ghc-option=-dynamic pkg.

El ejecutable se creó con enlaces dinámicos, pero la parte de la biblioteca no se pudo usar.

Supongo que el uso de la opción --ghc-option=-dynamic provocó que la versión estática de la biblioteca también se haya creado con enlaces dinámicos.

Desde Cabal-1.14 puedo usar la opción --enable-executable-dynamic que funciona correctamente.