Frage

Ich werde durch die reale Welt Haskell , und kam zu dem Beispiel:

-- file: ch04/InteractWith.hs
-- Save this in a source file, e.g. Interact.hs

import System.Environment (getArgs)

interactWith function inputFile outputFile = do
  input <- readFile inputFile
  writeFile outputFile (function input)

main = mainWith myFunction
  where mainWith function = do
          args <- getArgs
          case args of
            [input,output] -> interactWith function input output
            _ -> putStrLn "error: exactly two arguments needed"

        -- replace "id" with the name of our function below
        myFunction = id

Aber wenn ich versuche, es zu kompilieren (ghc --make InteractWith) ich diesen Fehler:

$ ghc --make InteractWith
[1 of 1] Compiling Main             ( InteractWith.hs, InteractWith.o )

/var/folders/38/38dlZO7fEXyCgGIFUZA0Ok+++TI/-Tmp-/ghc91310_0/ghc91310_0.s:309:0:
    suffix or operands invalid for `push'

/var/folders/38/38dlZO7fEXyCgGIFUZA0Ok+++TI/-Tmp-/ghc91310_0/ghc91310_0.s:358:0:
    suffix or operands invalid for `push'

/var/folders/38/38dlZO7fEXyCgGIFUZA0Ok+++TI/-Tmp-/ghc91310_0/ghc91310_0.s:384:0:
    32-bit absolute addressing is not supported for x86-64

/var/folders/38/38dlZO7fEXyCgGIFUZA0Ok+++TI/-Tmp-/ghc91310_0/ghc91310_0.s:384:0:
    cannot do signed 4 byte relocation

/var/folders/38/38dlZO7fEXyCgGIFUZA0Ok+++TI/-Tmp-/ghc91310_0/ghc91310_0.s:387:0:
    32-bit absolute addressing is not supported for x86-64

/var/folders/38/38dlZO7fEXyCgGIFUZA0Ok+++TI/-Tmp-/ghc91310_0/ghc91310_0.s:387:0:
    cannot do signed 4 byte relocation

Ich bin mit GHC 6.10.4 auf Mac OS 10.6 (Snow Leopard).

War es hilfreich?

Lösung

Ich habe ähnliche Probleme fast alles in Snow Leopard kompilieren. Die Lösung war ich fand den Inhalt /usr/bin/ghc zu ersetzen (was ist eigentlich nur ein Shell-Skript) mit dem folgenden:

#!/bin/sh

exec /Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.4/ghc -B/Library/Frameworks/GHC.framework/Versions/610/usr/lib/ghc-6.10.4/. -optc-m32 -opta-m32 -optl-m32 -dynload wrapped ${1+"$@"}

Ich denke, es ist eigentlich nur das Hinzufügen -optc-m32 -opta-m32 -optl-m32 aber ich kann mich nicht erinnern ...

(Ich fand ursprünglich diese irgendwo auf dem internets, aber ich weiß nicht mehr, wo. Es hat mich auch eine Weile dauerte.)

Andere Tipps

Haben Sie auf Snow Leopard aktualisiert vor kurzem? Ich glaube, das passiert, wenn Sie versuchen, eine ausführbare Datei in Snow Leopard zu verwenden, die mit Leopard gebaut wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top