标准 C 语言中最简单的 SQL 实现,用于基于 linux 的 ARM 终端
Posted
技术标签:
【中文标题】标准 C 语言中最简单的 SQL 实现,用于基于 linux 的 ARM 终端【英文标题】:most simple SQL implementation in standard C to be used in linux-based ARM terminals 【发布时间】:2011-10-28 08:14:48 【问题描述】:你知道一些开源的非常小的 SQL 服务器实现可能在 1 个 *.c(或多个)文件中,没有外部依赖项吗?实现应该是非常基本的——支持大多数简单形式的选择/插入/删除/更新...不需要 DDL(尽管拥有它会很好)。一次只有基本的 1 个用户操作 - (不需要多用户模式或解析数据库锁)。只需对一些 1 db 文件进行操作(可能在文本模式下)。 ?? 源必须是标准的便携式 C。
非常感谢!
【问题讨论】:
【参考方案1】:显而易见的选择是SQLite。
您可以添加“-DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION”以避免外部依赖。
【讨论】:
hm,谢谢,但我已经尝试过 sqlite-amalgamation 版本,但它对于我的简单需求来说太臃肿了。最重要的是,我不能在我的系统上编译它——例如,我不能使用 posix 线程,也不能在 SQL 实现中使用多线程(一次 1 个用户对我来说就足够了)。而且我还遇到了一些其他编译错误——例如缺少声明:ftruncate、MAP_FAILED、PROT_READ、PTHREAD_MUTEX_INITIALIZER'、...还缺少外部包括:select update insert delete
...
你试过用 -DSQLITE_CONFIG_SINGLETHREAD 编译吗?还有其他配置选项可以进一步瘦身。
啊,你应该使用 -DSQLITE_THREADSAFE=0 。不过,它仍然抱怨对动态链接器的未定义引用。
如果添加 -DSQLITE_OMIT_LOAD_EXTENSION,您将避免对动态链接器的未定义引用。以上是关于标准 C 语言中最简单的 SQL 实现,用于基于 linux 的 ARM 终端的主要内容,如果未能解决你的问题,请参考以下文章