在Ubuntu的D程序中使用Sqlite的最简单方法是什么?

时间:2011-07-12 12:25:20

标签: sqlite d

我想使用phobos.etc.c.sqlite3绑定。使用C编译器编译sqlite3.c以生成.o文件,然后将其与我的程序链接。

我应该使用哪个C编译器,以及哪些编译器标志? 是否可以在一步中将sqlite3.o与DMD链接起来,而无需单独调用链接器?

或者还有其他更简单的方法吗?

答:如何让Sqlite在64位Ubuntu上使用D

  1. 安装sqlite dev sudo apt-get install libsqlite3-dev

  2. 编译dmd test.d -L-ldl -L/usr/lib/x86_64-linux-gnu/libsqlite3.a

  3. test.d

    import std.stdio, std.string, etc.c.sqlite3;
    
    void main () {
        sqlite3* db;
        auto ret = sqlite3_open (toStringz("mydb.s3db"), &db);
        writeln (ret);
    }
    
    由于sqlite3 linking problems

    ,需要

    -ldl切换

3 个答案:

答案 0 :(得分:10)

只要安装了sqlite3开发包,就可以调用dmd test.d -L-lsqlite3 - 不需要绝对路径。

一个不错的选择是lib编译指示:

pragma(lib, "sqlite3");

import std.stdio, std.string, etc.c.sqlite3;

void main () {
    sqlite3* db;
    auto ret = sqlite3_open (toStringz("mydb.s3db"), &db);
    writeln (ret);
}

有了这个,你可以说dmd test.d

我无法使用-ldl重现您的问题,但也可以将其添加为pragma指令。

答案 1 :(得分:3)

您可以将绑定与可用的sqlite库(当然是适当的版本)一起使用,而无需手动将其编译为目标文件。就像你在C中所做的那样:你#include <headers>并将-llibrary添加到编译器标志中。这里也是一样的 - import和一个链接指令。

编辑:

在Ubuntu上,您可以使用以下命令安装预编译的sqlite

sudo apt-get install libsqlite3-dev

另外,请参阅http://prowiki.org/wiki4d/wiki.cgi?DatabaseBindings#SQLite了解其他sqlite个绑定变体。

答案 2 :(得分:1)

最新的phobos现在包含一个非常新的SQLite绑定。

参见phobos / etc / c / sqlite3.d