libsqlite3 问题:我无法使用 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 也是如此。

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

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

解决方法

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

根据您的操作系统,这将查找 .dll 或 .so 的名称正好是其中一个名称。

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

  1. 使用正确的二进制文件安装一个 sqlite3 版本
  2. 创建指向通过 database-type-load-foreign 重定向的二进制文件的软链接(假设 libsqlite.so.0 是 clsql 正在查找的文件)
  3. 添加到 ln -s /usr/lib/libsqlite.so.0 /usr/lib/libsqlite3.so 的新路径以指向正确的二进制文件,如果它安装在其他地方(通过 CLSQL-SYS:*FOREIGN-LIBRARY-SEARCH-PATHS*