首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在OS 10.10 Yosemite上使用Clozure编译为本机可执行文件

无法在OS 10.10 Yosemite上使用Clozure编译为本机可执行文件
EN

Stack Overflow用户
提问于 2014-11-23 13:41:47
回答 2查看 441关注 0票数 2

我创建了一个简单的hello world (hello.lisp),代码:

代码语言:javascript
复制
(defun main ()
    (format t "Hello,World"))

,用于测试CCL的本地可执行编译的程序。我继续从CCL编译和加载缓冲区(使用ClozureCommonLispVersion1.10-store-r16266 (DarwinX8664))。

当我测试它时:

代码语言:javascript
复制
    ? (main)
    Hello,World
    NIL
    ?

它找到了主要功能。当我继续用:(save-application "/tmp/h" :toplevel-function #'main :prepend-kernel t)编译它时,它会继续操作并退出CCL。

该文件是创建的,其大小为56 is。但是,当我尝试运行它时,我得到了以下输出:

错误:没有适用于泛型函数的方法:#当使用参数调用时:(#:NOTE CURRENT-PACKAGE #)在执行:#,in process toplevel(6)时。错误:没有适用于泛型函数的方法:#当使用参数调用时:(#:断开选项-字符串T)在执行:#,in process toplevel(6)时。错误:没有适用于泛型函数的方法:#当使用参数调用时:(#:断开选项-字符串T)在执行:#,in process toplevel(6)时。错误:泛型函数:#在调用参数时没有适用的方法:

错误就会继续。我做错什么了?是虫子吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-23 15:28:40

我发现关键字:note-current-package:break-options-string在可可原料的来源。由于prepend-kernel t为当前会话中使用的内核做了准备,所以您似乎会在应用程序中包含可可启动。然而,那些关键字的调度方法只在‘ns-应用程序上执行,而您的新应用程序似乎并不是这样。

解决方案可能是在不使用cocoa的情况下添加内核,方法是将代码加载到非GUI映像中,或者为:prepend-kernel参数使用这样一个内核的路径名。

票数 0
EN

Stack Overflow用户

发布于 2014-11-23 16:02:18

要在Mac上创建Clozure的可执行文件:

  • 对于非GUI应用程序,需要从存储库安装Clozure CL安装Clozure。你需要从那里开始做下载CCL。这个版本附带了一个可执行的Lisp (内核+映像),它没有加载GUI。
  • 对于GUI应用程序,您需要使用应用程序生成器。相应的函数是ccl::build-application。Mac上的GUI应用程序需要一些基础设施,然后再创建它。注意,CCL附带了一个ccl/examples/cocoa/currency-converter/中的示例应用程序。就我个人而言,我更喜欢使用存储库中的CCL --它通常比中的版本要新一些。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27089578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档