2017-01-10 4 views
0

메모장에이 Scheme 소스 파일을 작성했습니다. 나는 gambit 체계를 설치했다.Gambit을 사용하여 실행 파일을 만드는 방법

(define hello-world 
    (lambda() 
     (begin 
    (write ‘Hello-World) 
      (newline) 
    (hello-world)))) 

저는 Windows 명령 줄을 사용합니다. 명령 줄에 'gsc hello.scm'을 입력합니다. 내 바탕 화면에 "hello.o2"라는 파일이 있습니다. 내 커맨드 라인에서 "Hello World"팝업을보고 싶습니다. 예를 들어, C++로 물건을 컴파일하면 a.exe라는 파일이 생기고 커맨드 라인에서 그것을 관찰 할 수 있습니다.

어떻게 gambit 컴파일러로 구성 할 수 있습니까?

답변

0

당신은 -exe 컴파일러 스위치를 추가하여 실행 파일을 만들 수 있습니다

gsc -exe hello.scm 

이 hello.exe를 생성합니다. 또는 당신은 .o1 (또는 .o2 등) 파일을 생성하고 그것을 실행할 수 있습니다 당신은 자신의에서 실행하는 실행 파일을 원하는 경우

gsc hello.scm 
gsi hello 
+0

내가 "gsc -exe hello.scm"할 때 오류 메시지가 나타납니다. C : \ 사용자 \ 소유자 \ 바탕 화면> GSC -exe hello.scm C : \ PROGRA ~ 2 \ 책략 \의 v4.8.6의 \ lib 디렉토리/libgambit.a (gai_strerrorA ' collect2.exe'에 정의 참조 os_b : 오류 : ld가 1 종료 상태를 반환했습니다 – John

+0

이 문제는 컴퓨터에 설치된 것과 libgambit.a를 빌드하는 데 사용 된 것 사이의 mingw 버전의 차이로 인한 것일 수 있습니다 (분명히 솔루션은 직접 Gambit을 소스에서 빌드하는 것입니다. [link ] (https://webmail.iro.umontreal.ca/pipermail/gambit-list/2013-September/007042.html)) 또 다른 해결책은 컴퓨터에 동일한 정보를 설치하는 것입니다. – feeley

0

, 당신은 그것을 만들 수있는 몇 가지 작업을 수행해야 올바르게 작동합니다.

@;gsi-script %~f0 %* 
; 
(define hello-world 
     (lambda() 
       (begin (write `Hello-World) (newline) (hello-world)))) 

(define (main) 
     (hello-world)) 

첫 줄은 DOS/Windows 전용입니다. 유닉스 버전의 최상위 줄은

;#!/usr/local/bin/gsi-script -:d0 

이 줄은 컴파일 된 후에 컴파일러에게 알려줍니다.

또한 main 절차가 필요합니다. 매개 변수를 전달하지 않으면 내가 준 양식을 사용할 수 있습니다. 매개 변수를 전달해야하는 경우 모든 매개 변수가 문자열로 전달되고 사용하기 전에 구문 분석하거나 변환해야 할 수도 있다는 점에 유의하여 주 프로 시저를 적절하게 작성해야합니다.