代码之家  ›  专栏  ›  技术社区  ›  ayrnieu

ECL如何在可执行文件中包含ASDF依赖关系?

  •  4
  • ayrnieu  · 技术社区  · 17 年前

    我有这个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.
    

    我已经到了只解决我引入的错误的地步 我可以在以下情况下下注和加载依赖项 stumpwm 开始(偶数 不加载我的 ~/.eclrc 这些)。但是这个 应该 这是可能的。

    1 回复  |  直到 17 年前
        1
  •  3
  •   ayrnieu    17 年前

    哦,哇。 Here's the answer :

    1. 删除 ecl-make.lisp stumpwm.asd

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

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

    ecl-examples 现在炫耀 asdf:make-build