«Не может сделать 4-байтовое перемещение со знаком» при компиляции

StackOverflow https://stackoverflow.com/questions/1822397

Вопрос

Я прохожу Реальный мир Haskell и попадаю в пример:

-- 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

Но когда я пытаюсь его скомпилировать ( ghc --make InteractWith ), я получаю эту ошибку:

$ 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

Я использую GHC 6.10.4 в Mac OS 10.6 (Snow Leopard).

Это было полезно?

Решение

У меня были похожие проблемы при компиляции почти всего в Snow Leopard. Решение, которое я нашел, состояло в том, чтобы заменить содержимое / usr / bin / ghc (которое на самом деле является просто сценарием оболочки) следующим:

#!/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+"$@"}

Я думаю, что на самом деле это просто добавление -optc-m32 -opta-m32 -optl-m32 , но я не могу вспомнить ...

(Первоначально я нашел это где-то в интернете, но я не помню где. Это тоже заняло у меня некоторое время.)

Другие советы

Вы недавно обновились до Snow Leopard? Я считаю, что это происходит, когда вы пытаетесь использовать исполняемый файл в Snow Leopard, созданный с использованием Leopard.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top