gpt4 book ai didi

compilation - 使用 Clozure Common Lisp 编译二进制文件

转载 作者:行者123 更新时间:2023-12-03 10:59:52 25 4
gpt4 key购买 nike

给定一个简单的程序,如下所示,你会如何:

  • 将其编译为要由实现加载的单独图像文件,您将使用哪些命令行参数来加载它?
  • 将其编译为可以按原样加载和运行的独立二进制文件。

    注意:我尝试在保存应用程序时添加“:prepend-kernel t”,结果只是抛出了跟随错误。
    Error: value NIL is not of the
    expected type REAL. While executing:
    CCL::<-2, in process Initial(0).
  • 您将如何抑制欢迎消息?

    计划
    (defun main ()
    (format t "This is the program.")0)

  • 编辑

    讨厌回答我自己的问题的一部分,但我仍然发现它。

    加载函数后,键入以下内容进行编译:
    (ccl:save-application "app")

    这将创建一个图像文件。通过将它传递给实现类型来加载它(注意:'ccl' 二进制文件在我的系统路径中);
    ccl -I app

    运行顶级函数将其作为参数传递
    ccl -I app --eval (main)

    最佳答案

    请参阅 Saving Applications 下的 Clozure Common Lisp 文档

    编译和加载 Lisp 文件

    您可以编译一个名为 /foo/bar.lisp 的文件。通过调用

     (compile-file "/foo/bar.lisp")

    这将创建一个 fasl (FASt Load) 文件,其中包含 native 代码。

    您可以使用函数 LOAD 加载编译后的文件,即 fasl 文件。 . LOADCOMPILE-FILE是标准的 Common Lisp 函数。

    创建应用程序

    几个定义:
  • CCL 内核:CCL 的一部分,提供低级运行时服务,如内存管理。
  • 图片:保存的 Lisp 堆转储
  • 应用:CCL内核+镜像。这可以在一个文件中。

  • 您可以通过调用 CCL 特定函数来保存应用程序:
    (save-application "/foo/bar-image" :toplevel-function #'main)

    这将保存一个图像,您可以从命令 shell 使用 CCL 内核运行该图像:
    ccl -I /foo/bar-image

    要保存包含内核的可执行文件,请使用 Lisp:
    (save-application "/foo/bar-app"
    :toplevel-function #'main
    :prepend-kernel t)

    你可以像往常一样使用 /foo/bar-app 调用这个可执行文件从命令 shell 。

    在 Clozure Common Lisp 中,您可以检查
    *command-line-argument-list*

    获取提供的命令行参数列表。

    关于compilation - 使用 Clozure Common Lisp 编译二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/833314/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com