ECL은 어떻게 실행 파일에 ASDF 종속성을 포함 할 수 있습니까?
-
06-09-2019 - |
문제
이 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에게 어디에서 찾을 수 있는지 알려줍니다). 하지만 이것은 ~해야 한다 가능합니다.
해결책
오 와우. 여기에 답이 있습니다:
삭제
ecl-make.lisp
, 변경 사항을 되돌립니다stumpwm.asd
ecl -eval '(asdf:make-build :stumpwm :type :program)'
그게 다야. [ASDF는 AN을 보지 못합니다 asdf:build-op
, 하지만.
편집 : 글쎄, 그것은 또한 프롤로그가 필요합니다. ECL- 예식 이제 선보입니다 asdf:make-build
제휴하지 않습니다 StackOverflow