2010-07-23 20 views
5

Sto provando a prendere il mio progetto Haskell e dividerlo in una libreria e un insieme di file eseguibili che dipendono dalla libreria. Quando provo a compilare ora ho il seguente errore: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") 

credo che il p potrebbe essere la bandiera p relativi ai pacchetti per GHC. È corretto? Devo aggiungere più opzioni di configurazione da qualche parte al mio file cabal per supportare questo?

risposta

2

Sta dicendo che ha trovato una compilazione di profili, ma stai creando Main.hs senza la creazione di profili abilitata. Soluzioni rapide:

  • attivare il profiling nella build per Main.hs
  • compilare e installare <MyModule> con profilatura abilitati

In entrambi i casi, che inizierà con un comando simile

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

Ho riscontrato un problema simile durante la compilazione di eseguibili con collegamenti dinamici.

Ho compilato una libreria e un eseguibile invocando cabal install --ghc-option=-dynamic pkg.

L'eseguibile è stato creato con collegamento dinamico ma la parte della libreria era inutilizzabile.

Suppongo che l'utilizzo dell'opzione --ghc-option=-dynamic abbia provocato la creazione della versione statica della libreria con collegamento dinamico.

Dal momento che Cabal-1.14 posso utilizzare l'opzione --enable-executable-dynamic che funziona correttamente.