libsqlite3 问题:我无法使用 cl-sql

libsqlite3 issue: I am not able to use cl-sql

我正在尝试使用 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相同。

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

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

您的问题是 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. 创建一个软 link 到您的二进制文件,通过 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