2017-01-10 5 views
0

Я написал этот исходный файл схемы в блокноте. У меня установлена ​​схема гамбита.Как сделать исполняемый файл с помощью Gambit

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

Я использую оконную командную строку. В командной строке введите 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: \ Users \ Владелец \ Desktop> GSC -exe hello.scm C: \ PROGRA ~ 2 \ Гамбит \ v4.8.6 \ Lib/libgambit.a (os_b определенной ссылкой на 'gai_strerrorA» collect2.exe: error: ld вернулся 1 статус выхода – John

+0

Эта проблема, вероятно, связана с различием в версии mingw между тем, что вы установили на своей машине, и тем, что было использовано для сборки libgambit.a (видимо, решение состоит в том, чтобы самостоятельно создать 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. Версия Unix этой верхней строке

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

Эти строки говорят компилятору, как выполнить код, как только его компиляции.

Кроме того, вам нужна процедура main. Если вы не передаете какие-либо параметры, вы можете использовать форму, которую я вам дал. Если вам нужно передать параметры, вам необходимо будет написать основную процедуру соответствующим образом, отметив, что все параметры передаются как строки и, возможно, их нужно проанализировать или преобразовать перед использованием.