使用 Embeddable Common Lisp 编译文件的正确方法是什么?
What is the correct way to compile a file using Embeddable Common 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-and-eval,默认情况下不加载编译器,您需要使用
(require 'cmp)
第一。
我不确定为什么手册中没有提到这一点。
根据ECL manual,你需要初始化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"))
我试图使用 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-and-eval,默认情况下不加载编译器,您需要使用
(require 'cmp)
第一。
我不确定为什么手册中没有提到这一点。
根据ECL manual,你需要初始化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"))