2017-01-10 3 views
0

Ich schrieb diese Scheme Quelldatei auf den Merkzettel. Ich habe ein Gambit-Schema installiert.Wie mache ich eine ausführbare Datei mit Gambit

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

Ich benutze Windows-Befehlszeile. Ich gebe 'gsc Hallo.scm' in die Befehlszeile ein. Es spuckt eine Datei auf meinem Desktop namens "hello.o2" aus. Ich möchte "Hello-World" in meiner Befehlszeile sehen. Zum Beispiel, wenn ich Sachen in C++ kompiliere gibt es mir eine Datei namens a.exe und ich kann es in der Befehlszeile beobachten.

Wie kann ich das mit dem Gambit-Compiler für Schema tun?

Antwort

0

Sie können eine ausführbare Datei erstellen, indem Sie den -exe Compiler-Schalter ergänzt:

gsc -exe hello.scm 

hello.exe produzieren wird. Alternativ können Sie die .o1 (oder .o2 usw.) Datei erzeugen und führen Sie es mit:

gsc hello.scm 
gsi hello 
+0

wenn ich "gsc-exe Hallo.scm" bekomme ich eine Fehlermeldung. C: \ Benutzer \ Besitzer \ Desktop> GSC -exe hello.scm C: \ PROGRA ~ 2 \ Gambit \ v4.8.6 \ lib/libgambit.a (os_b definiert Bezugnahme auf ' collect2.exe‚gai_strerrorA: error: ld returned 1 exit status – John

+0

Dieses Problem ist wahrscheinlich auf einen Unterschied in der Mingw-Version zwischen dem, was Sie auf Ihrer Maschine installiert haben und dem, was verwendet wurde, um libgambit.a zu bauen (anscheinend ist die Lösung Gambit aus der Quelle selbst zu bauen: [link ] (https://webmail.iro.umontreal.ca/pipermail/gambit-list/2013-September/007042.html)) Eine andere Lösung könnte sein, den gleichen Mingw auf Ihrem Rechner zu installieren. – feeley

0

Wenn Sie eine ausführbare Datei möchten, die auf seinen eigenen laufen, müssen Sie ein paar Dinge tun, um es zu machen richtig funktionieren.

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

(define (main) 
     (hello-world)) 

Diese erste Zeile ist nur für DOS/Windows. Die Unix-Version dieser oberen Zeile ist

Diese Zeilen sagen dem Compiler, wie der Code ausgeführt wird, sobald er kompiliert ist.

Außerdem benötigen Sie eine main Prozedur. Wenn Sie keine Parameter übergeben, können Sie das Formular verwenden, das ich Ihnen gegeben habe. Wenn Sie Parameter übergeben müssen, müssen Sie die Hauptprozedur entsprechend schreiben. Beachten Sie, dass alle Parameter als Zeichenfolgen übergeben werden und vor der Verwendung möglicherweise analysiert oder konvertiert werden müssen.

Verwandte Themen