How to compile an extension into sqlite?

佐手、 提交于 2019-12-10 10:57:53

问题


I would like to compile an extension into sqlite for loading at runtime.

The file I am using is extension - functions.c from https://www.sqlite.org/contrib

I have been able to compile into a loadable module but I need to statically link it for loading at runtime (using shell.c to create an interface at run time)

I have read the manual on linking, but to be honest, it's a little bit beyond my scope of comprehension!

Could someone let me know what I need to do to compile please?


回答1:


I'm not sure if this is a complete answer yet, but from the how to compile document, it looks like you might want to make an amalgamation first. In src/shell.c.in you can search for ext/misc and you'll see lines such as this:

INCLUDE ../ext/misc/completion.c

These lines are used by the tool/mkshellc.tcl script to build the combined source file that will end up being compiled into the command line shell. Once the make process for sqlite3.c is complete, you should see the code you want in the combined source file.

Then, I found a function that contained this code:

sqlite3_shathree_init(p->db, 0, 0);

All I had to do was add this in the same place:

sqlite3_series_init(p->db, 0, 0);

And now I'm able to use the generate_series function. I can't find the functions.c file you were talking about, but the process should be something similar.




回答2:


Q: "How to compile an extension into sqlite?"

A: That depends on the extension. To compile extension-functions.c referenced in the OP:

gcc -fPIC -shared extension-functions.c -o libsqlitefunctions.so -lm

(to remove the compilation warning see here)

Usage:

$ sqlite3
sqlite3> select cos(radians(45));
0.707106781186548
sqlite> .exit


来源:https://stackoverflow.com/questions/30898113/how-to-compile-an-extension-into-sqlite

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!