Clozure CL未找到外部变量“O_NONBLOCK”

时间:2012-02-25 19:48:29

标签: lisp common-lisp

我对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
Welcome to Clozure Common Lisp Version 1.8-dev-r15225M-trunk (DarwinX8664)!
? #$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 个答案:

答案 0 :(得分:2)

您的CCL安装不完整或不正确。尝试在CCL邮件列表上询问它。