C-使用可嵌入的公共LISP编译文件的正确方法是什么?



我试图使用ECL创建一个.o文件,目的是使用其编译到C的功能,但是当试图构建程序作为文档列表时,我会收到错误。

我正在运行:

(c:build-program "CompiledFile" "hello.lisp")

接收错误:

Debugger received error of type: SIMPLE-ERROR
Cannot find the external symbol BUILD-PROGRAM in #<"C" package>.
Error flushed.
>> "CompiledFile"
>> "hello.lisp"
>> ;;; Warning: Ignoring an unmatched right parenthesis.

Hello.lisp的内容如下:

(defun say-hello ()
  (print "Hello, world"))
(say-hello)
(terpri)
(quit)

我正在遵循此处找到的文档,https://common-lisp.net/project/ecl/static/manual/ch34s03.html,其功能定义为:

c:build-program {image-name &key lisp-files ld-flags prologue-code epilogue-code}

根据https://ecls-list.narkive.com/xacojubf/c-build-program-program-and-eval default不加载编译器,您需要使用<</p>

(require 'cmp)

首先。

我不确定为什么在手册中没有提及。

根据ECL手册,您需要初始化C/C 编译器以生成.o文件:

(ext:install-c-compiler)
(compile-file "hello.lisp" :system-p t) ; Now this produces .o file

从.o:

生成可执行文件
(c:build-program "CompiledFile" :lisp-files '("hello.o"))

相关内容

  • 没有找到相关文章

最新更新