我试图写一个简单的程序在鸡计划与一些内联C在OS,其中鸡已经安装了自制。
;; 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 add1.ss编译我的程序时,CSC_OPTIONS环境变量中没有标志,会产生以下结果:
$ 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也会产生同样的失败。在鸡肉手册中,似乎与路径管理相关的唯一命令行选项是-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/...目录下查找小鸡的内部库?
发布于 2018-12-06 20:13:56
foreign是该模块的旧名称,源自鸡肉4。您已经安装了鸡肉5,在这里我们已经完全重构了所有模块。为了与其他人保持一致,这个特殊的名字被简单地重新命名了。在小鸡5中,这个模块被称为(外国鸡)。
所以你需要
(import (chicken foreign))https://stackoverflow.com/questions/53658194
复制相似问题