gpt4 book ai didi

scheme - 使用 Gambit-C 编译方案

转载 作者:行者123 更新时间:2023-12-04 02:42:24 24 4
gpt4 key购买 nike

我正在运行 Ubuntu 18.04,我安装了 gambc 来执行 Scheme 脚本。gsi 工作正常,可以解释我提供的任何文件,REPL 也按预期工作。

不幸的是,我不知道如何使用 gsc

http://gambitscheme.org/wiki/index.php/A_Tour_of_Scheme_in_Gambit关于如何使用 gsc 编译程序的信息很少,man gsc 更多关于 gsi 并且没有涵盖所有可用选项(例如选项 -o-c 没有在 man 页面中提到),我能找到的所有其他来源都不适用于我。

让我详细说明最后一部分:

$ cat hello.scm
;#!/usr/local/bin/gsi-script -:d0
;
(define hello-world
(lambda ()
(begin (write `Hello-World) (newline) (hello-world))))

(define (main)
(hello-world))

然后

$ gsc hello.scm
$ ls
hello.o1 hello.scm
$ ./hello.o1
Segmentation fault (core dumped)

失败了,也是如此

$ gsc -c hello.scm
$ ls
hello.c hello.scm
$ gcc -o hello hello.c
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o : In function « _start » :
(.text+0x20) : Undefined reference to « main »
/tmp/ccnDUVi0.o : [30 more lines]
collect2: error: ld returned 1 exit status
/* File: "m1.c" */
int power_of_2 (int x) { return 1<<x; }

; File: "m2.scm"
(c-declare "extern int power_of_2 ();")
(define pow2 (c-lambda (int) int "power_of_2"))
(define (twice x) (cons x x))

; File: "m3.scm"
(write (map twice (map pow2 '(1 2 3 4)))) (newline)

$ gsc -c m2.scm # create m2.c (note: .scm is optional)
$ gsc -c m3.scm # create m3.c (note: .scm is optional)
$ gsc -link m2.c m3.c # create the incremental link file m3_.c

$ gsc -obj m1.c m2.c m3.c m3_.c
m1.c:
m2.c:
m3.c:
m3_.c:
$ gcc m1.o m2.o m3.o m3_.o -lgambit -lm -ldl -lutil
$ ./a.out
((2 . 2) (4 . 4) (8 . 8) (16 . 16))

根据 http://www.iro.umontreal.ca/~gambit/doc/gambit.html 的建议在 $ gsc -obj m1.c m2.c m3.c m3_.c 失败说 m3_.c 没有定义,甚至忽略它,它在 $ gcc m1.o m2.o m3.o m3_.o -lgambit -lm -ldl -lutil 提示 -lgambit 没有定义。然而,该文档确实解释了 -o-c 选项的用法。

我会在这里停下来,但我确实尝试遵循其他两个教程,但都没有用,我再也找不到它们了。

如果上述任何方法可以修改为适合我使用,或者如果任何其他过程允许将脚本编译为可执行文件(现在即使是简单的 1 文件程序就足够了),我将不胜感激。

最佳答案

部分3. The Gambit Scheme compiler在您提到的 Gambit 手册中,对编译器及其采用的所有选项进行了非常翔实的描述。

如果你想将 Scheme 源文件 hello.scm 编译成可执行程序,试试:

gsc -exe hello

您不必提供文件扩展名。生成的可执行文件将与源文件同名,没有扩展名(所以 hello.scm -> hello)。

关于scheme - 使用 Gambit-C 编译方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58738811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com