0

我正在尝试使用cl-sql数据库访问sqlite3.

但我得到了错误

Couldn't load foreign libraries "libsqlite3", "sqlite3". (searched CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS*: (#P"/usr/lib/clsql/" #P"/usr/lib/"))  

sqlite.

我已经安装sqlite3使用并且目录中apt-get有一个文件。libsqlite.so.0/usr/lib

我也尝试sqlite3从源代码构建,但我无法获取so文件。我做错了什么?

4

1 回答 1

2

您的问题是 cl-sql 具有第三方依赖项。如果您检查 cl-sql 的实现(可能在“~/quicklisp/dists/quicklisp/software/clsql-202011220-git/db-sqlite3/sqlite3-loader.lisp”下),您将看到该函数database-type-load-foreign正在尝试加载一个名为“libsqlite3”或“sqlite3”的库。

根据您的操作系统,这要么正在寻找具有这些名称之一的 .dll 或 .so。

鉴于 libsqlite.so 的版本在您的特定 linux 发行版上具有不同的名称,您有许多不同的选项可以使该库工作。

  1. 使用正确的二进制文件安装 sqlite3 版本
  2. 创建一个指向通过重定向的二进制文件的软链接ln -s /usr/lib/libsqlite.so.0 /usr/lib/libsqlite3.so(假设 libsqlite.so.0 是 clsql 正在寻找的文件)
  3. 添加新路径以CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS*指向正确的二进制文件,如果它安装在其他地方(通过clsql:push-libary-path
于 2021-06-17T12:41:41.783 回答