2012-02-16 18 views
10

Soy nuevo en Haskell y recientemente instalé la plataforma con GHC. Decidí probarlo mediante la compilación de un simple programa Hola mundo: main = putStrLn "Hello, world"Haskell - Problema Compilación en GHC

Ahora, cuando voy a la línea de comandos (Windows 7), busque el directorio adecuado, y el tipo de ghc hello.hs, se vuelve con el siguiente mensaje : "[1 of 1] Compilando Main (hello.hs, hello.o)". Entiendo que una vez que haya terminado de compilar, debería seguir con "Linking hello.exe ...", pero eso nunca llega, y no se produce .exe.

Básicamente, ¿hay alguna razón discernible por la que esto estaría sucediendo? ¿Hay algún problema con el código? ¿Hay algo que desconozca o debería intentar reinstalar la plataforma Haskell?

Gracias.

+1

Para ser claros: ¿le preocupa porque no está produciendo hello.exe, o porque no muestra ese fragmento de texto? ¿Realmente produce el ejecutable, y el ejecutable funciona como se indica? –

+0

Lo sentimos, no produce el .exe. Por lo que puedo decir, ni produce los archivos .o o .hi. ¿Dónde GHC usualmente pondría estos archivos una vez creados, también? En el mismo directorio que el .hs? –

+3

Sí, generalmente es el mismo directorio. Si tienes un GHC antiguo, es posible que desees 'ghc --make hello.hs'. ¿Qué versión de GHC tienes? 'ghc --version' si lo instaló recientemente debería ser 7.0.4, creo. Tengo 7.0.3 en Win7 y 'ghc hello.hs && hello.exe' funciona bien. –

Respuesta

1

¿Ha producido un archivo a.exe o a.out.exe o a.out en su lugar? Si no, ¿entonces tal vez solo puedes vincularlo tú mismo? ld -o hello.exe hello.o o cualquiera que sea el comando de enlace en su plataforma.

1

Usaría la opción --make, como en ghc --make hello.hs. (En realidad, puede omitir la extensión de archivo si lo desea). Esto determinará automáticamente qué se debe hacer, qué paquetes, si es necesario, se deben vincular, y generalmente hará todo lo que cabría esperar.

+6

A partir de ghc-7.0. *, '--make' es el modo por defecto. OP tiene 7.0.4, por lo que ya no necesita '--make'. –

+0

¿De verdad? No tenía idea de que lo habían cambiado ... – MathematicalOrchid

+2

Sí, lo cambiaron. Otro cambio importante es que los rtsopts ahora están deshabilitados de forma predeterminada, por lo que si desea ejecutar algo con, por ejemplo, '+ RTS -s', necesitas vincular con' -rtsopts'. –

10

Tengo ghc para vincular mi programa en un archivo ejecutable eliminando la declaración del módulo desde el inicio del archivo.

Cuestiones relacionadas