2012-02-16 2 views
10

저는 하스켈을 처음 접했고, 최근에 GHC로 플랫폼을 설치했습니다. 간단한 Hello World 프로그램을 컴파일하여 테스트 해보기로 결정했습니다.Haskell - GHC 컴파일 문제

이제 명령 줄 (Windows 7)로 들어가서 적절한 디렉토리를 찾고 ghc hello.hs을 입력하면 다음 메시지가 표시됩니다. : "[1 of 1] Main (hello.hs, hello.o) 컴파일". 일단 컴파일이 끝나면 "hello.exe 연결 ..."과 같이 따라야하지만 절대로 오지 않아서 .exe가 생성되지 않는다는 것을 이해합니다.

기본적으로 이러한 현상이 발생하는 이유는 무엇입니까? 코드에 문제가 있습니까, 제가 모르는 부분이 있습니까, 아니면 그냥 Haskell 플랫폼을 다시 설치해야합니까?

감사합니다.

+1

분명해야 할 점은 hello.exe가 생성되지 않았기 때문입니까, 아니면 텍스트가 표시되지 않기 때문입니까? 실제로 실행 파일을 생성합니까? 실행 파일은 지시 된대로 수행합니까? –

+0

죄송합니다 - .exe가 생성되지 않습니다. 지금까지 내가 말할 수있는대로 .o 또는 .hi 파일을 생성하지 않습니다. GHC는 일반적으로 한 번 생성 된 파일을 어디에 두는가? .hs와 같은 디렉토리에 있습니까? –

+3

예, 대개 동일한 디렉토리입니다. 오래된 GHC를 가지고 있다면'ghc --make hello.hs '를 원할 수 있습니다. 어떤 버전의 GHC가 있습니까? 'ghc --version'이 최근에 설치 되었다면 7.0.4라고 생각합니다. 나는 Win7에서 7.0.3을 가지고 있고'ghc hello.hs && hello.exe'는 잘 동작한다. –

답변

1

대신 a.exe 또는 a.out.exe 또는 a.out 파일이 생성 되었습니까? 그렇지 않다면, 아마도 당신은 그것을 당신 스스로 연결시킬 수 있습니까? ld -o hello.exe hello.o 또는 플랫폼에 link 명령이 무엇이든간에.

1

ghc --make hello.hs에서와 같이 --make 옵션을 사용합니다. (실제로 파일 확장명을 생략 할 수 있습니다.) 이렇게하면 필요한 작업을 자동으로 파악하고, 링크해야 할 패키지가 있으면 일반적으로 예상하는 모든 작업을 수행합니다.

+6

ghc-7.0. *부터 --make는 기본 모드. OP는 7.0.4이므로, 더 이상'--make'가 필요 없습니다. –

+0

정말요? 나는 그들이 그것을 바꿨는지 전혀 몰랐다. ... – MathematicalOrchid

+2

그래, 그들은 그것을 바꿨다. 또 다른 중요한 변경 사항은 rtsopt가 기본적으로 비활성화되어 있으므로 예를 들어 rtsopt를 사용하여 무언가를 실행하려는 경우입니다. '+ RTS -s','-rtsopts'와 연결해야합니다. –

10

파일 시작 부분에서 모듈 선언을 제거하여 ghc가 내 프로그램을 실행 파일에 연결했습니다.

관련 문제