安装新版本SQLite 3之前要做的清理工作:
首先确保我们的CentOS上没有安装SQLite3或者我们需要先卸载SQLite 3:
检查是否安装,可以直接通过命令:
sqlite3 --version
进行查看,如果有存在旧的版本,那么我们需要卸载先,防止后续安装的新版本和旧版本弄混淆。
卸载可以通过如下方式:
首先查找是否安装了sqlite的rpm包:
rpm -q sqlite
如果有安装,会显示如下:
[root@localhost ~]# rpm -q sqlite sqlite-3.6.20-1.el6.x86_64
进行移除rpm包:
rpm -e --nodeps sqlite-3.6.20-1.el6.x86_64
移除之后,我们就可以进行后续新版本的安装了。
要编译SQLite 3,总共分三步:
1:下载源码;
官方下载地址:https://sqlite.org/download.html
我们下载Source Code中的 sqlite-autoconf-3210000.tar.gz
2:编译安装;
将下载的源码扔到CentOS上,进行解压,配置安装:
线程安全的配置参考:
Use the SQLITE_THREADSAFE compile-time parameter to selected the threading mode. If no SQLITE_THREADSAFE compile-time parameter is present, then serialized mode is used. This can be made explicit with -DSQLITE_THREADSAFE=1.
With -DSQLITE_THREADSAFE=0 the threading mode is single-thread.
With -DSQLITE_THREADSAFE=2 the threading mode is multi-thread.
tar xf sqlite-autoconf-3210000.tar.gz cd sqlite-autoconf-3210000 CFLAGS="-Os -DSQLITE_THREADSAFE=2" ./configure make make install
3:测试使用。
安装之后,建议重启系统,然后查看安装版本:
[root@localhost ~]# sqlite3 --version 3.21.0 2017-10-24 18:55:49 1a584e499906b5c87ec7d43d4abce641fdf017c42125b083109bc77c4de48827
说明安装成功。
下面再验证下编译参数:
输入命令sqlite3回车,进入sqlite3命令交互:
[root@localhost ~]# sqlite3 SQLite version 3.21.0 2017-10-24 18:55:49 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite> pragma compile_options; COMPILER=gcc-4.8.2 ENABLE_DBSTAT_VTAB ENABLE_FTS3 ENABLE_RTREE ENABLE_STMTVTAB THREADSAFE=2 sqlite> .quit
下面我们通过C++代码进行SQLite 3接口调用。
进行调用前,首先我们要确保系统可以访问到SQLite 3的动态链接库【主要原因是libsqlite默认将库文件安装在/usr/local/lib/目录下,系统的动态链接库是不访问这个路径的】。我们进行SQLite 3的动态链接库拷贝,将其拷贝至/usr/lib64/目录中:
cd /usr/local/lib/ cp libsqlite3.* /usr/lib64/ ldconfig
然后我们就可以写程序进行SQLite 3的API接口调用了。
示例程序:输出SQLite 3是否是线程安全的
testsqlite3.cpp
#include <stdio.h> #include <sqlite3.h> int main(int argc, char **argv){ printf("SQLite3 threadsafe %d", sqlite3_threadsafe()); return 0; }
编译执行:
[root@localhost ~]# gcc testsqlite3.cpp -lpthread -ldl -lsqlite3 -o testsqlite3 [root@localhost ~]# ./testsqlite3 SQLite3 threadsafe 2
参考资源:
Install Python and Sqlite from Source
文章的脚注信息由WordPress的wp-posturl插件自动生成