鸡方案 -- CSC 无法定位'chicken.foreign.import.so'



我正试图用OS X上的一些内联C在Chicken Scheme中编写一个简单的程序,其中Chicken已经安装了自制程序。

;; add1.ss
(import foreign)
(define add-1
(foreign-lambda* long ((unsigned-long x))
"
long n = 1
C_return(n + x);))
(print (add-1 (read)))

我感兴趣的foreign库肯定存在。

find /usr/local | grep chicken | grep foreign | grep lib
/usr/local//Cellar/chicken/5.0.0/lib/chicken/9/chicken.foreign.import.so

但是,在CSC_OPTIONS环境变量中没有标志的情况下,通过csc add1.ss编译我的程序会产生:

$ csc add1.ss
Syntax error (import): cannot import from undefined module
foreign
Expansion history:
<syntax>          (##core#begin (import foreign))
<syntax>          (import foreign)      <--
Error:shell command terminated with non-zero exit status 17920:
'/usr/local/Cellar/chicken/bin/5.0.0/bin/chicken' 'add1.ss' -output-file 'add1.c'

因此,运行时,这个错误消息很有意义

$ chicken add1.ss -output-file add1.c

产生相同的故障。在chicken manpage中,似乎唯一与路径管理相关的命令行选项是-include-path。我尝试了以下咒语,所有咒语都产生了相同的错误

$ chicken add1.ss -output-file add1.c -include-path /usr/local/Cellar/chicken/5.0.0/lib/chicken/9/chicken.foreign.import.so
$ chicken add1.ss -output-file add1.c -include-path /usr/local/Cellar/chicken/5.0.0/lib/chicken/9
$ chicken add1.ss -output-file add1.c -include-path /usr/local/Cellar/chicken/5.0.0/lib/chicken
$ chicken add1.ss -output-file add1.c -include-path /usr/local/Cellar/chicken/5.0.0/lib
$ chicken add1.ss -output-file add1.c -include-path /usr/local/Cellar/chicken/5.0.0

我还尝试将chicken.foreign.import.so作为额外的"待编译文件"传递,但没有成功:

$ chicken add1.ss -output-file add1.c /usr/local/Cellar/chicken/5.0.0/lib/chicken/9/chicken.foreign.import.so 

其产生相同的错误消息。

指导chicken或编译器驱动程序csc/usr/local/Cellar/chicken/...下的目录中查找Chicken的内部库的正确方法是什么?

foreign是该模块的旧名称,来自CHICKEN 4。您已经安装了CHICKEN 5,在那里我们已经完全重构了所有模块。为了与其他的一致性,这个特定的名称被简单地重命名了。在鸡5中,这个模块被称为(外国鸡(

所以你需要做

(import (chicken foreign))

相关内容

  • 没有找到相关文章

最新更新