【问题标题】:How to make executable File using Gambit如何使用 Gambit 制作可执行文件
【发布时间】:2017-01-10 03:45:45
【问题描述】:

我在记事本上写了这个 Scheme 源文件。我已经安装了 gambit 方案。

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

我使用 Windows 命令行。我在命令行中输入“gsc hello.scm”。它在我的桌面上吐出一个名为“hello.o2”的文件。我想在我的命令行上看到“Hello-World”弹出。例如,当我用 c++ 编译东西时,它会给我一个名为 a.exe 的文件,我可以在命令行上观察它。

如何使用方案的 gambit 编译器做到这一点?

【问题讨论】:

    标签: scheme gambit


    【解决方案1】:

    您可以通过添加 -exe 编译器开关来创建可执行文件:

    gsc -exe hello.scm
    

    将产生 hello.exe 。或者,您可以生成 .o1(或 .o2 等)文件并使用以下命令执行它:

    gsc hello.scm
    gsi hello
    

    【讨论】:

    • 当我“gsc -exe hello.scm”时,我收到一条错误消息。 C:\Users\Owner\Desktop>gsc -exe hello.scm C:\PROGRA~2\Gambit\v4.8.6\lib/libgambit.a(os_b 定义了对 `gai_strerrorA' collect2.exe 的引用:错误:ld 返回 1退出状态
    • 这个问题可能是由于您在机器上安装的和用于构建 libgambit.a 的 mingw 版本不同(显然解决方案是自己从源代码构建 Gambit:@987654321 @)。另一种解决方案可能是在您的机器上安装相同的 mingw。
    【解决方案2】:

    如果您想要一个可以自行运行的可执行文件,您需要做几件事以使其正常工作。

    @;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 过程。如果你没有传递任何参数,那么你可以使用我给你的表格。如果需要传递参数,则需要适当编写主程序,注意所有参数都是作为字符串传递的,可能需要在使用前进行解析或转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      相关资源
      最近更新 更多