到现在为止,我已成功地建立我的Common Lisp的项目到一个独立的可执行文件SBCL是这样的:Common Lisp的:独立的可执行文件和共享C库
(sb-ext:save-lisp-and-die "myexecutable" :toplevel #'main :executable t)
而且,我已调用C函数,从普通的lisp编译成共享库;像这样:
(cffi:define-foreign-library libtest
(:unix (:default "./libtest"))
(t (:default "./libtest")))
(cffi:use-foreign-library libtest)
或使用库的绝对路径。生成的可执行文件需要共享库libtest.so。我的myexecutable和libtest.so都在同一个目录下。但是,如果我使用绝对,我不能分发这两个文件。如果我使用“./libtest”,则从其他目录运行时找不到该库。
这种情况下的方法是什么? 提前谢谢!
你为什么不能重新分配使用绝对路径? –
假设我放入“/ home/me/src/my-project”,然后写入lisp文件。当我分发这两个文件时,不知何故应该用新路径的知识更新lisp文件。我如何实现这一目标? – Dimitris
尽管我认为库通常放在一个系统范围内(例如linux上的'/ usr/lib'),为什么不能只使用相对路径呢? –