美文网首页
sqlite3源码编译以及c代码链接sqlite3库(无坑)

sqlite3源码编译以及c代码链接sqlite3库(无坑)

作者: 凌烟醉卧 | 来源:发表于2019-09-30 09:42 被阅读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
    

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

    相关文章

      网友评论

          本文标题:sqlite3源码编译以及c代码链接sqlite3库(无坑)

          本文链接:https://www.haomeiwen.com/subject/obrcpctx.html