2012-02-16 30 views
10

Sono molto nuovo ad Haskell e recentemente ho installato la piattaforma con GHC. Ho deciso di provarlo compilando un semplice programma di mondo Ciao: main = putStrLn "Hello, world"Haskell - Compilare numeri in GHC

Ora, quando vado nella riga di comando (Windows 7), individuare la directory appropriata, e digitare ghc hello.hs, ritorna con il seguente messaggio : "[1 di 1] Compilando Main (ciao.hs, ciao.o)". Capisco che una volta completata la compilazione, dovrebbe seguire "Linking hello.exe ...", ma non viene mai, e non viene prodotto alcun .exe.

Fondamentalmente, c'è qualche ragione visibile per cui ciò potrebbe accadere? C'è un problema con il codice, c'è qualcosa che non conosco, o dovrei semplicemente provare a reinstallare la piattaforma Haskell?

Grazie.

+1

Per essere chiari: sei preoccupato perché non sta producendo hello.exe o perché non visualizza quel pezzetto di testo? Realizza effettivamente l'eseguibile e l'eseguibile esegue come da istruzioni? –

+0

Mi dispiace - non produce l'exe. Per quanto posso dire, né produce i file .o o .hi. Dove sarebbe GHC di solito mettere questi file una volta creati, anche? Nella stessa directory di .hs? –

+3

Sì, solitamente è la stessa directory. Se hai un GHC più vecchio, potresti voler 'ghc - make hello.hs'. Quale versione di GHC hai? 'ghc --version' se hai installato di recente dovrebbe essere 7.0.4, penso. Ho 7.0.3 su Win7 e 'ghc hello.hs && hello.exe' funziona bene. –

risposta

1

Ha invece prodotto un file a.exe o a.out.exe o a.out? Se no, allora forse puoi collegarlo da solo? ld -o hello.exe hello.o o qualunque sia il comando di collegamento sulla tua piattaforma.

1

Vorrei utilizzare l'opzione --make, come in ghc --make hello.hs. (Se si desidera, si può tralasciare l'estensione del file.) Ciò determinerà automaticamente cosa deve essere fatto, quali pacchetti devono essere collegati e in genere fanno tutto ciò che ci si aspetta.

+6

A partire da ghc-7.0. *, '--make' è il modalità di default. OP ha 7.0.4, quindi non ha più bisogno di '--make'. –

+0

Davvero? Non avevo idea di averlo cambiato ... – MathematicalOrchid

+2

Sì, l'hanno cambiato. Un altro cambiamento importante è che rtsopts ora sono disabilitati di default, quindi se vuoi eseguire qualcosa con e.g. '+ RTS -s', è necessario collegarsi con' -rtsopts'. –

10

Ho ottenuto ghc per collegare il mio programma in un eseguibile rimuovendo la dichiarazione del modulo dall'inizio del file.

Problemi correlati