Я пытаюсь написать простую программу на Chicken Scheme с некоторым встроенным C на OS X, где Chicken был установлен вместе с homebrew.
;; 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
для поиска внутренних библиотек Chicken в каталоге под /usr/local/Cellar/chicken/...
?