2010-01-24 64 views
2

這個問題被問和回答ayrnieu在ecl如何在可執行文件中包含asdf依賴項? (坐2)

How can ECL include ASDF dependencies in an executable?

但示例代碼,他掛實際上不涉及任何依賴關係。我試圖在他引用的stumpwm代碼中複製模型,但我無法讓它工作。他是我的檔案。

---- ECL-test.asd ----

(defsystem "ecl-test" 
    :description "test of asdf:make-build" 
    :depends-on (:mydefs) 
    :components ((:file "package") 
    (:file "ecl-test" :depends-on ("package")) 
    (:file "main" :depends-on ("package" "ecl-test")) 
     ) 
) 

---- ECL-test.lisp ----

(in-package :ecl-test) 

    (defun test() 
     (format t "testing...~%") 

;; Note that with the next line commented out, 
;; the program never uses the package "mydefs". 
;; (format t (write-to-string (mydefs:number-sequence :from 2 :to 7))) 

     (format t "...done~%")) 

----包。口齒不清----

(defpackage :ecl-test 
    (:use :cl 
:mydefs 
) 
    (:export :test)) 

---- ---- main.lisp

(ecl-test:test) 
(ext:quit) 

此編譯成功(粘液):

CL-USER> (asdf:make-build 'ecl-test :type :program :monolithic t :epilogue-code '(ext:quit 0)) 

; loading system definition from /home/dabrowsa/lisp/ecl-test/ecl-test.asd into 
; #<ASDF0 package> 
;;; Loading "/home/dabrowsa/lisp/ecl-test/ecl-test.asd" 
;;; Compiling /home/dabrowsa/lisp/ecl-test/package.lisp. 
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=3 
;;; End of Pass 1. 
;;; Note: Creating tag: "_eclitxZgyvjVscp1_KzxnJ9z" for #P"/home/dabrowsa/lisp/ecl-test/package.o" 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/home/dabrowsa/lisp/ecl-test/package.c" -o "/home/dabrowsa/lisp/ecl-test/package.o" 
;;; Finished compiling /home/dabrowsa/lisp/ecl-test/package.lisp. 
;;; Note: Scanning #P"/home/dabrowsa/lisp/ecl-test/package.o" 
;;; Note: Found tag: "_eclitxZgyvjVscp1_KzxnJ9z" for /home/dabrowsa/lisp/ecl-test/package.o 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/tmp/ECLINITMs8gOO.c" -o "/tmp/ECLINITMs8gOO.o" 
;;; Note: Invoking external command: 
;;; gcc -o "/home/dabrowsa/lisp/ecl-test/package.fas" -L"/usr/lib/" "/tmp/ECLINITMs8gOO.o" "/home/dabrowsa/lisp/ecl-test/package.o" -shared -lecl -lgmp -lgc -ldl -lm 
;;; Loading "/home/dabrowsa/lisp/ecl-test/package.fas" 
;;; Compiling /home/dabrowsa/lisp/ecl-test/ecl-test.lisp. 
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=3 
;;; Compiling (DEFUN TEST ...). 
;;; End of Pass 1. 
;;; Note: Creating tag: "_eclclGsJgWGIqMw1_y1ynJ9z" for #P"/home/dabrowsa/lisp/ecl-test/ecl-test.o" 
;;; Emitting code for TEST. 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/home/dabrowsa/lisp/ecl-test/ecl-test.c" -o "/home/dabrowsa/lisp/ecl-test/ecl-test.o" 
;;; Finished compiling /home/dabrowsa/lisp/ecl-test/ecl-test.lisp. 
;;; Note: Scanning #P"/home/dabrowsa/lisp/ecl-test/ecl-test.o" 
;;; Note: Found tag: "_eclclGsJgWGIqMw1_y1ynJ9z" for /home/dabrowsa/lisp/ecl-test/ecl-test.o 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/tmp/ECLINITg28qfo.c" -o "/tmp/ECLINITg28qfo.o" 
;;; Note: Invoking external command: 
;;; gcc -o "/home/dabrowsa/lisp/ecl-test/ecl-test.fas" -L"/usr/lib/" "/tmp/ECLINITg28qfo.o" "/home/dabrowsa/lisp/ecl-test/ecl-test.o" -shared -lecl -lgmp -lgc -ldl -lm 
;;; Loading "/home/dabrowsa/lisp/ecl-test/ecl-test.fas" 
;;; Compiling /home/dabrowsa/lisp/ecl-test/main.lisp. 
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=3 
;;; End of Pass 1. 
;;; Note: Creating tag: "_eclJi0DFzaXyAEw1_4LynJ9z" for #P"/home/dabrowsa/lisp/ecl-test/main.o" 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/home/dabrowsa/lisp/ecl-test/main.c" -o "/home/dabrowsa/lisp/ecl-test/main.o" 
;;; Finished compiling /home/dabrowsa/lisp/ecl-test/main.lisp. 
;;; Note: Scanning #P"/home/dabrowsa/lisp/ecl-test/main.o" 
;;; Note: Found tag: "_eclJi0DFzaXyAEw1_4LynJ9z" for /home/dabrowsa/lisp/ecl-test/main.o 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/tmp/ECLINITeop9MY.c" -o "/tmp/ECLINITeop9MY.o" 
;;; Note: Invoking external command: 
;;; gcc -o "/home/dabrowsa/lisp/ecl-test/main.fas" -L"/usr/lib/" "/tmp/ECLINITeop9MY.o" "/home/dabrowsa/lisp/ecl-test/main.o" -shared -lecl -lgmp -lgc -ldl -lm 
;;; Note: Scanning #P"/home/dabrowsa/lisp/ecl-test/main.o" 
;;; Note: Found tag: "_eclJi0DFzaXyAEw1_4LynJ9z" for /home/dabrowsa/lisp/ecl-test/main.o 
;;; Note: Scanning #P"/home/dabrowsa/lisp/ecl-test/ecl-test.o" 
;;; Note: Found tag: "_eclclGsJgWGIqMw1_y1ynJ9z" for /home/dabrowsa/lisp/ecl-test/ecl-test.o 
;;; Note: Scanning #P"/home/dabrowsa/lisp/ecl-test/package.o" 
;;; Note: Found tag: "_eclitxZgyvjVscp1_KzxnJ9z" for /home/dabrowsa/lisp/ecl-test/package.o 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/tmp/ECLINITsLgWth.c" -o "/tmp/ECLINITsLgWth.o" 
;;; Note: Invoking external command: 
;;; ar cr /home/dabrowsa/lisp/ecl-test/libecl-test.a /tmp/ECLINITsLgWth.o /home/dabrowsa/lisp/ecl-test/package.o /home/dabrowsa/lisp/ecl-test/ecl-test.o /home/dabrowsa/lisp/ecl-test/main.o 
;;; Note: Invoking external command: 
;;; ranlib /home/dabrowsa/lisp/ecl-test/libecl-test.a 
;;; Note: Invoking external command: 
;;; gcc "-I/usr/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2 -fPIC -Dlinux -O -w -c "/tmp/ECLINITTF1dqA.c" -o "/tmp/ECLINITTF1dqA.o" 
;;; Note: Invoking external command: 
;;; gcc -o "/home/dabrowsa/lisp/ecl-test/ecl-test-mono" -L"/usr/lib/" "/tmp/ECLINITTF1dqA.o" "/home/dabrowsa/lisp/ecl-test/libecl-test.a"  -lecl -lgmp -lgc -ldl -lm #<ASDF::PROGRAM-OP NIL 38147728> 

但是執行ECL試驗 - 單產生錯誤。

~/lisp/ecl-test$ ./ecl-test-mono 

The function ASDF::SYSTEM-REGISTERED-P is undefined. 
No restarts available. 

Broken at NIL. 
ECL-TEST>> 

SYSTEM-REGISTERED-P似乎是在航空自衛隊的未導出的功能,我不知道爲什麼會在這裏雨後春筍般冒出來,但後來,我是一個新手,所以我知道什麼。

回答

1

你最好在ecls-list上提問。

或者試試這個在您的呼叫,使-BUILD:

:prologue-code '(require :asdf) 
相關問題