在 Ubuntu 上使用 D 程序中的 Sqlite 最简单的方法是什么?
我想使用 phobos.etc.c.sqlite3
绑定。使用C编译器编译sqlite3.c以生成.o文件,然后将其与我的程序链接。
我应该使用哪个 C 编译器以及什么编译器标志? 是否可以一步将 sqlite3.o 与 DMD 链接起来,而无需单独调用链接器?
或者还有其他更简单的方法吗?
答案:如何在 64 位 Ubuntu 上让 Sqlite 与 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);
}
-ldl 开关是需要的,因为 sqlite3 链接问题
I suppose using phobos.etc.c.sqlite3
binding. Compiling sqlite3.c using a C compiler to make a .o file and then link it with my program.
Which C compiler should I use, and what compiler flags?
Is it possible link the sqlite3.o with DMD in one step, without calling linker separately?
Or is there some other even easier way?
Answer: How to get Sqlite going with D on 64bit Ubuntu
install sqlite dev
sudo apt-get install libsqlite3-dev
compile
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);
}
-ldl switch was needed because of sqlite3 linking problems
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只要你安装了sqlite3开发包,你就可以调用
dmd test.d -L-lsqlite3
——不需要绝对路径。一个不错的替代方案是
lib
pragma:有了它,您就可以直接说
dmd test.d
。我无法使用
-ldl
重现您的问题,但也可以将其添加为 pragma 指令。As long as you have the sqlite3 development package installed, you can just call
dmd test.d -L-lsqlite3
-- no need for an absolute path.A nice alternative is the
lib
pragma:With that in place, you can just say
dmd test.d
.I can't reproduce your issue with
-ldl
, but that could also be added as a pragma directive.您可以将绑定与可用的
sqlite
库(当然是适当版本的)一起使用,而无需手动将其编译为目标文件。就像您在 C 中所做的那样:您需要#include
并将-llibrary
添加到编译器标志中。此处相同 -import
和链接指令。编辑:
在 Ubuntu 上,您可以使用以下命令安装预编译的
sqlite
:另请参阅 http://prowiki.org/wiki4d/wiki.cgi?DatabaseBindings#SQLite 用于其他一些
sqlite
绑定变体。You can use the binding with an available
sqlite
library (of an appropriate version, certainly), without having to manually compile it to an object file. Just like what you would have done in C: you'd#include <headers>
and add-llibrary
to compiler flags. The same here —import
, and a link directive.EDIT:
On Ubuntu you can install precompiled
sqlite
using the following command:Also, see http://prowiki.org/wiki4d/wiki.cgi?DatabaseBindings#SQLite for some other
sqlite
binding variants.最新的 phobos 现在包含一个相当最新的 SQLite 绑定。
参见phobos/etc/c/sqlite3.d
Latest phobos contains a quite up-to-date SQLite binding now.
See phobos/etc/c/sqlite3.d