我剛剛開始使用common-lisp,來自C++和Python。我正在嘗試運行一個簡單的SDL程序,除了在屏幕上顯示圖像外別無它物。我可以在SLIME中使用它。問題是,從shell作爲腳本運行時,它不起作用。lisp作爲shebang腳本vs lisp在SLIME中運行
我的計劃是這樣的:
#!/usr/bin/sbcl --script
(asdf:operate 'asdf:load-op :lispbuilder-sdl)
(defun main()
(sdl:with-init()
(sdl:window 320 240)
(sdl:draw-surface (sdl:load-image "image.png"))
(sdl:update-display)
(sdl:with-events()
(:quit-event() t)
(:video-expose-event() (sdl:update-display)))))
(main)
當我運行這是一個腳本,我得到以下錯誤:
[email protected]:~/projects/common-lisp/sandbox$ ./hello-world.lisp
unhandled ASDF:MISSING-COMPONENT in thread #<SB-THREAD:THREAD "initial thread" RUNNING {AA5E849}>:
component "lispbuilder-sdl" not found
0: (SB-DEBUG::MAP-BACKTRACE #<CLOSURE (LAMBDA #) {AAF1EF5}>)[:EXTERNAL]
(...長回溯略)
奇怪的是,如果我執行以下操作,該程序正常工作。我用Emacs打開程序,在另一個窗口啓動泥,並在泥窗口,我進入程序的第一行:
(asdf:operate 'asdf:load-op :lispbuilder-sdl)
然後,在編輯器窗口,我打抄送CK(編譯/負載文件)。如預期的那樣,彈出一個顯示image.png的窗口。
爲什麼在作爲shebang腳本運行時這不起作用?我該如何解決它?