如何在Common Lisp源码中使用Quicklisp库?SBCL脚本提示QL包不存在
解决SBCL脚本模式下无法使用Quicklisp的问题
问题原因
用sbcl --script运行脚本时,SBCL默认不会加载Quicklisp的初始化配置,导致QL包未被定义,调用ql:quickload就会报错。
解决办法
方法1:在脚本开头手动加载Quicklisp
找到你本地Quicklisp的setup.lisp文件路径(通常在C:\Users\<你的用户名>\quicklisp\setup.lisp),在Server.lisp最顶部添加加载代码:
; 替换成你自己的quicklisp路径,注意用斜杠或双反斜杠 (load "C:/Users/你的用户名/quicklisp/setup.lisp") (ql:quickload "usocket") ; 你的TCP服务器代码...
方法2:通过命令行参数先加载Quicklisp
不用修改脚本,直接在命令行先加载Quicklisp初始化文件,再运行脚本:
sbcl --load "C:/Users/你的用户名/quicklisp/setup.lisp" --script Server.lisp
方法3:设置Quicklisp为SBCL默认启动项
在SBCL的REPL中执行以下代码,将Quicklisp添加到SBCL的初始化文件:
(ql:add-to-init-file)
执行后,后续不管是启动REPL还是用sbcl --script运行脚本,SBCL都会自动加载Quicklisp,无需手动处理。
内容的提问来源于stack exchange,提问作者Tanzina Rahman Smita
相关产品推荐
相关产品推荐

