2017-01-10 75 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(os_b 定義參考'gai_strerrorA」 collect2.exe:錯誤:ld返回1退出狀態 – John

+0

這個問題可能是由於在你的機器上安裝的東西和用來構建libgambit.a的東西之間的mingw版本不同所致(顯然,解決方案是從你自己的源代碼構建Gambit:[link ](https://webmail.iro.umontreal.ca/pipermail/gambit-list/2013-September/007042.html))。另一種解決方案可能是在你的機器上安裝相同的mingw。 – 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程序。如果你沒有傳遞任何參數,那麼你可以使用我給你的表單。如果您需要傳遞參數,則需要適當地編寫主要過程,注意所有參數都以字符串形式傳遞,可能需要在使用前進行解析或轉換。