【发布时间】:2020-03-11 19:52:25
【问题描述】:
我在 macOS 下使用 Nix 包管理器来安装我的大部分软件,包括动态库。我想让 CFFI 可以访问它们。这意味着添加到cffi:*foreign-library-directories* 的路径。很好,但是我该怎么做呢
全局适用于我的系统(例如,应该适用于通过 Quicklisp 加载的包)
每次启动都不加载CFFI
sbcl?
忽略第二个标准,我可以在~/.sbclrc中添加几行:
(ql:quickload "CFFI")
(pushnew (merge-pathnames ".nix-profile/lib/" (user-homedir-pathname))
cffi:*foreign-library-directories*
:test #'equal)
我正在寻找的是一种添加路径的方法在 CFFI 加载之后。有点像 Emacs Lisp 中的 eval-after-load。这可能吗?
【问题讨论】:
-
我对 nix 不太熟悉,但也许用 nix-env 加载 sbcl 可以设置环境,以便底层 dlopen 调用透明地工作?
-
我确实通过 nix 安装了 sbcl,但这只是普通的 sbcl。 Nix(至少对于 macOS)似乎不包含任何为 sbcl 打包的 Lisp 库。虽然有许多名称以
lisp-开头的包,但也有其他 Lisp 实现。 -
请注意,Nix 不是这里的核心问题。我还在
/opt/brew下使用 Homebrew 安装了库,这会导致同样的问题。
标签: common-lisp cffi