Clozure CL Внешняя переменная "O_NONBLOCK" не найдена - PullRequest
0 голосов
/ 25 февраля 2012

У меня есть вопрос о Clozure CL. Пока я пытался быстро загрузить пакет из quicklisp. Выкидывает ошибку. Погуглил, но ничего полезного не нашел.

Вот сообщение об ошибке:

(ql:quickload :drakma)
To load "drakma":
  Load 1 ASDF system:
    drakma
; Loading "drakma"
..
Read error between positions 6342 and 6532 in     /Users/Mac/quicklisp/dists/quicklisp/software/cl+ssl-20111105-git/streams.lisp.
> Error: Foreign variable "O_NONBLOCK" not found
> While executing: CCL::%LOAD-VAR, in process Listener(6).

Заранее спасибо

Я спросил в списке рассылки:

ответ из списка рассылки:

Если вы переместите или переименуете каталог «darwin-x86-headers» (или иным образом попробуйте смоделировать незавершенную установку):

[src/ccl-dev] gb@antinomial> mv darwin-x86-headers64 darwin-x86-headers64X

, затем запустите CCL и попытайтесь получить доступ к чему-либо (O_NONBLOCK), определенному в файлы интерфейса в этом каталоге:

[src/ccl-dev] gb@antinomial> ccl64<br> Welcome to Clozure Common Lisp Version 1.8-dev-r15225M-trunk (DarwinX8664)!<br> ? #$O_NONBLOCK

вы получаете предупреждение или два об отсутствующих файлах интерфейса

; Warning: Interface file #P"/usr/local/src/ccl-dev/darwin-x86-headers64/libc/constants.cdb" does         not exist, and the containing directory does not exist.
;          This may mean that that the "ccl:" logical-pathname host has not been properly initialized. ; While executing: CDB-OPEN, in process listener(1).
; Warning: Interface file #P"/usr/local/src/ccl-dev/darwin-x86-headers64/libc/vars.cdb" does not exist, and the containing directory does not exist.
;          This may mean that that the "ccl:" logical-pathname host has not been properly initialized.

до получения той же ошибки, о которой вы сообщили.

Если вы используете Quicklisp для загрузки некоторого кода, который пытается найти значение этой константы в (отсутствующих) файлах базы данных вы не видите этого предупреждения.

С другой стороны, вы видите точечные символы, напечатанные при использовании Quicklisp. (Иногда их много!)

Я не претендую на то, чтобы быть частью целевой аудитории Quicklisp, но у меня был голос Я думаю, что проголосовал бы за возможность видеть сообщения о прогрессе и диагностику (даже если это означало видеть меньше точек и даже - особенно - если диагностика указать проблемы с установкой, как они, кажется, в этом случае.)

Чтобы прекратить гореть и попытаться ответить на оригинальный вопрос, если интерфейс каталога перемещается обратно туда, где его ожидает CCL, затем:

? #$O_NONBLOCK
4

все работает как положено. (Если бы они не сделали, было бы невозможно скомпилировать Сам CCL или для компиляции большого количества другого кода, который использует макросы читателя FFI.) Это означает, что я предпочитаю, что CCL не установлен правильно на вашем система. Я не знаю это с абсолютной уверенностью, и у меня нет никакого способа знать, как он установлен в вашей системе, но я верю, что если он установлен способ, которым руководство и веб-сайт предлагают подобные проблемы, избегают.

1 Ответ

2 голосов
/ 26 февраля 2012

Ваша установка CCL является неполной или неправильной. Попробуйте спросить об этом в списке рассылки CCL.

...