Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
752 views
in Technique[技术] by (71.8m points)

c++ - How to install extension-functions.c for sqlite3 on ubuntu

I use sqlite3 on Ubuntu and would like to add the acos and asin functions that are provided by the extension-functions.c file.

https://github.com/seth/RSQLite.extfuns/blob/master/src/extension-functions.c

When I follow the instructions given in the source code, I get the following error and I didn't find any answer on how I could get this working. I tried on Ubuntu 15.04, 15.10 and now 16.04.

extension-functions.c: In function ‘print_elem’:
extension-functions.c:1942:10: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64_t {aka long int}’ [-Wformat=]
   printf("%d => %lld
", ee,c);
          ^

Here's what I did:

  • I installed sqlite3, libsqlite3-0, libsqlite3-3:i386, and libsqlite3-dev.
  • I downloaded the extension-functions.c into a new folder
  • inside the new folder I executed $ gcc -fPIC -lm -shared extension-functions.c -o libsqlitefunctions.so as suggested in the source code.

=> and then I get the error mentioned above.

What am I doing wong?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

To summarize what I did:

I modified the file to include the <inttypes.h> and changed the printf statements as instructed by Mohit Jain.

Then I executed

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

to compile the c file. Note that the -lm is at the end. Apparently this does matter.

After that you can include the libsqlitefunctions.so by calling

SELECT load_extension('/full/path/to/libsqlitefunctions.so');

before calling any of the new math functions.

Cheers, D.

PS: if you want to use it with Doctrine, you might want to follow this thread.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...