chicken scheme -- csc 找不到 'chicken.foreign.import.so'
chicken scheme -- csc cannot locate '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
作为附加 "file to be compiled" 传递,但无济于事:
$ 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,我们已经完全重构了所有模块。为了与其他的保持一致,这个特定的只是简单地重命名了。在 CHICKEN 5 中,这个模块被称为 (chicken foreign)
所以你需要做
(import (chicken foreign))
我正在尝试在 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
作为附加 "file to be compiled" 传递,但无济于事:
$ 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,我们已经完全重构了所有模块。为了与其他的保持一致,这个特定的只是简单地重命名了。在 CHICKEN 5 中,这个模块被称为 (chicken foreign)
所以你需要做
(import (chicken foreign))