sqlite3源码编译以及c代码链接sqlite3库(无坑)
2019-09-30 本文已影响0人
凌烟醉卧
这篇文章的目的是要将sqlite3的源码编译,使用自己写的C代码链接到库文件。
首先下载sqlite3的源码,官网地址
解压完成后如下:
定位到sqlite-autoconf-3290000目录下,执行
./configure
结束后会生成Makefile文件:
然后执行
make
make install
注意生成文件的文件所在的目录:
libtool: install: /usr/bin/install -c .libs/libsqlite3.so.0.8.6 /usr/local/lib/libsqlite3.so.0.8.6
libtool: install: (cd /usr/local/lib && { ln -s -f libsqlite3.so.0.8.6 libsqlite3.so.0 || { rm -f libsqlite3.so.0 && ln -s libsqlite3.so.0.8.6 libsqlite3.so.0; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libsqlite3.so.0.8.6 libsqlite3.so || { rm -f libsqlite3.so && ln -s libsqlite3.so.0.8.6 libsqlite3.so; }; })
libtool: install: /usr/bin/install -c .libs/libsqlite3.lai /usr/local/lib/libsqlite3.la
libtool: install: /usr/bin/install -c .libs/libsqlite3.a /usr/local/lib/libsqlite3.a
libtool: install: chmod 644 /usr/local/lib/libsqlite3.a
libtool: install: ranlib /usr/local/lib/libsqlite3.a
编写一个C文件,这个文件放在sqlite-autoconf-3290000目录下。
insert.c
#include <stdio.h>
#include <sqlite3.h>
static sqlite3 *db = NULL;
static char *errmsg = NULL;
int main()
{
int ret;
int insert;
ret = sqlite3_open("test.db", &db);
if(ret)
{
printf("can not open database.\n");
}
else
{
printf("open database succsee.\n");
}
insert = sqlite3_exec(db, "insert into test_table values('wujibing',111,222)", 0, 0, &errmsg);//插入
//insert = sqlite3_exec(db, "delete from test_table where name='xu'", 0, 0, &errmsg);//删除
//insert = sqlite3_exec(db, "delete from test_table", 0, 0, &errmsg);//清空
printf("exec_ret: %d\n", insert);
printf("errMsg: %d\n", errmsg);
sqlite3_close(db);
return 0;
}
让该C文件链接到sqlite库,以便可以在C中编写操作sqlite中的方法
gcc insert.c -lsqlite3
使用-I和-l会报错,可能是我的路径 有问题吧。
执行完之后会生成a.out文件,这个就是可执行文件,想要执行的话如下:
./a.out
如果想要修改生成文件的名称:
gcc insert.c -lsqlite3 -o insert.o
可以看到成功了执行了C中的输出语句,说明我写的这个文件已经链接到了sqlite库
当然你需要在sqlite3数据库中创建数据库:
test.db
然后有一张表:
test_table
最后字段都必须和代码中是对应的。