我有这个 ecl-make.lisp:

(asdf:oos 'asdf:compile-op :stumpwm)

(defun system-objects (system)
  (loop for component in (asdf:module-components (asdf:find-system system))
    for pathname = (asdf:component-pathname component)
    for directory = (pathname-directory pathname)
    for name = (pathname-name pathname)
    when (equal "lisp" (pathname-type pathname))
    collect (make-pathname :directory directory :type "o" :name name)))

(c:build-program "stumpwm" :lisp-files
  (concatenate 'list
    (system-objects :cl-ppcre)
    (system-objects :clx)
    (mapcar (lambda (component)
              (concatenate 'string component ".o"))
      stumpwm-system::*components*))
  :epilogue-code '(unwind-protect (stumpwm:stumpwm) (ext:quit)))

(stumpwm-system::*components* 是我的补充 stumpwm.asd,用于生成该文件中的ASDF组件以及上面的文件列表。)

它根本就失败了:

... same messages you get when (system-objects ...) are
... excluded from the c:build-program [it compiles in
... this case, but of course CL-PPCRE and CLX are unavailable.]
An error occurred during initialization:
Cannot find out entry point for binary file.

我只是要解决以前尝试引入的错误的地步。如果您构建了一个带有依赖性在内的ECL的程序,请告诉我您的工作方式。我看到如何在 stumpwm 开始(即使没有加载我的 ~/.eclrc ,告诉ASDF在哪里可以找到这些)。但是这个 应该 有可能。

有帮助吗?

解决方案

哦,哇。 答案如下:

  1. 删除 ecl-make.lisp ,将更改恢复为 stumpwm.asd

  2. ecl -eval '(asdf:make-build :stumpwm :type :program)'

就是这样。[ASDF 没有看到 asdf:build-op , 然而。]

编辑:嗯,它还需要一个序言。 ecl-示例 现在炫耀 asdf:make-build

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top