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

最后字段都必须和代码中是对应的。

上一篇下一篇

猜你喜欢

热点阅读