我想使用phobos.etc.c.sqlite3
绑定。使用C编译器编译sqlite3.c以生成.o文件,然后将其与我的程序链接。
我应该使用哪个C编译器,以及哪些编译器标志? 是否可以在一步中将sqlite3.o与DMD链接起来,而无需单独调用链接器?
或者还有其他更简单的方法吗?
答:如何让Sqlite在64位Ubuntu上使用D
安装sqlite dev sudo apt-get install libsqlite3-dev
编译dmd test.d -L-ldl -L/usr/lib/x86_64-linux-gnu/libsqlite3.a
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切换
答案 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