這篇文章的目的是要將sqlite3的源碼編譯,使用自己寫(xiě)的C代碼鏈接到庫(kù)文件饮亏。
首先下載sqlite3的源碼,官網(wǎng)地址
解壓完成后如下:
定位到sqlite-autoconf-3290000目錄下荐开,執(zhí)行
./configure
結(jié)束后會(huì)生成Makefile文件:
然后執(zhí)行
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
編寫(xiě)一個(gè)C文件,這個(gè)文件放在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庫(kù)佣渴,以便可以在C中編寫(xiě)操作sqlite中的方法
gcc insert.c -lsqlite3
使用-I和-l會(huì)報(bào)錯(cuò)辛润,可能是我的路徑 有問(wèn)題吧见秤。
執(zhí)行完之后會(huì)生成a.out文件,這個(gè)就是可執(zhí)行文件鹃答,想要執(zhí)行的話如下:
./a.out
如果想要修改生成文件的名稱(chēng):
gcc insert.c -lsqlite3 -o insert.o
可以看到成功了執(zhí)行了C中的輸出語(yǔ)句测摔,說(shuō)明我寫(xiě)的這個(gè)文件已經(jīng)鏈接到了sqlite庫(kù)當(dāng)然你需要在sqlite3數(shù)據(jù)庫(kù)中創(chuàng)建數(shù)據(jù)庫(kù):
test.db
然后有一張表:
test_table
最后字段都必須和代碼中是對(duì)應(yīng)的。