目录

Linux下源码编译安装SQLite3数据库

目录

Linux下源码编译安装SQLite3数据库

SQLite3是一个轻量级的嵌入式关系型数据库管理系统,广泛用于需要一个可靠、零配置、无服务器、事务性的SQL数据库引擎的应用程序中。它将整个数据库(包括定义、表、索引和数据本身)存储在一个单独的跨平台文件中。SQLite支持大多数SQL92标准,并提供了丰富的功能集,如事务处理、外键约束、触发器、视图等。

尽管大多数Linux发行版都会预装某个版本的SQLite3,但可能在以下情况下需要考虑升级:

  1. 性能改进:新版本通常会带来性能上的提升,比如更快的查询速度、更好的内存管理等。
  2. 安全修复:旧版本可能存在未修补的安全漏洞,更新到最新版本可以提高系统的安全性。
  3. 新特性需求:某些应用程序可能需要利用新版SQLite引入的新特性和增强功能,例如对JSON的支持、FTS5全文搜索等。
  4. 兼容性问题:如果你的应用依赖于特定版本的SQLite特性或行为,而当前系统版本不满足要求时,则需要升级。
  5. Bug修复:随着软件的发展,老版本中的错误会被发现并修正,为了保证应用稳定运行,有时也需要升级。

Sqlite3源码包下载地址:

https://i-blog.csdnimg.cn/direct/ed3a381531ab4041b047a5810ccdefb7.png

如上图所示,在此页面可下载最新的Sqlite数据版本源码包,Linux环境下建议下载.tar.gz格式或者.zip格式的源码包,下载完成后,将源码包上传至服务器备用。

在服务器上解压源码包:

tar xf sqlite-autoconf-3490100.tar.gz

然后进入解压后的目录,执行如下命令进行安装:

cd sqlite-autoconf-3490100/

./configure

make

make install

待安装完成,可使用如下命令查看编译后的版本信息:

sqlite3  –version

详细的安装过程如下:

[root@Test-Node1 ~]# ls
sqlite-autoconf-3490100.tar.gz
[root@Test-Node1 ~]# tar xf sqlite-autoconf-3490100.tar.gz 
[root@Test-Node1 ~]# ls
sqlite-autoconf-3490100  sqlite-autoconf-3490100.tar.gz
[root@Test-Node1 ~]# cd sqlite-autoconf-3490100/
[root@Test-Node1 sqlite-autoconf-3490100]# ./configure 
Host System...x86_64-pc-linux-gnu
Build System...x86_64-pc-linux-gnu
C compiler... cc  
C++ compiler... c++  
Build C compiler...cc
Checking for stdlib.h...ok
Source dir = /root/sqlite-autoconf-3490100
Build dir  = /root/sqlite-autoconf-3490100
Configuring SQLite version 3.49.1
Looking for install ... /usr/bin/install
Checking for int8_t...ok
Checking for int16_t...ok
Checking for int32_t...ok
Checking for int64_t...ok
Checking for intptr_t...ok
Checking for uint8_t...ok
Checking for uint16_t...ok
Checking for uint32_t...ok
Checking for uint64_t...ok
Checking for uintptr_t...ok
Checking for gmtime_r...ok
Checking for isnan...ok
Checking for localtime_r...ok
Checking for localtime_s...not found
Checking for malloc_usable_size...ok
Checking for strchrnul...ok
Checking for usleep...ok
Checking for utime...ok
Checking for pread...ok
Checking for pread64...ok
Checking for pwrite...ok
Checking for pwrite64...ok
Checking libs for fdatasync...none needed
Checking libs for nanosleep...none needed
Checking for sys/types.h...ok
Checking for sys/stat.h...ok
Checking for dlfcn.h...ok
Checking for unistd.h...ok
Checking for stdlib.h...(cached) ok
Checking for malloc.h...ok
Checking for memory.h...ok
Checking for string.h...ok
Checking for strings.h...ok
Checking for inttypes.h...ok
Checking for zlib.h...ok
Checking libs for deflate...-lz
Checking whether the C compiler accepts -rpath /usr/local/lib...no
Checking whether the C compiler accepts -Wl,-rpath,/usr/local/lib...yes
SQLITE_DEBUG build? no
Support threadsafe operation? Checking for libs...
Checking libs for pthread_create...-lpthread
Checking libs for pthread_mutexattr_init...-lpthread
Checking for line-editing capability...
Line-editing support for the sqlite3 shell: none
Checking libs for dlopen...-ldl
Loadable extension support enabled.
Checking libs for ceil...-lm
Enabling math SQL functions -lm
ICU support is disabled.
Feature flags...
  - fts4
  - fts5
  - geopoly
  - rtree
  - session
  - update-limit
  - memsys5
  - memsys3
  - scanstatus
  + json
Library feature flags: -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_THREADSAFE=1
Shell options: -DSQLITE_HAVE_ZLIB=1
Created Makefile from Makefile.in
Created sqlite3.pc from sqlite3.pc.in
Created sqlite_cfg.h
[root@Test-Node1 sqlite-autoconf-3490100]# make -j4
cc -c /root/sqlite-autoconf-3490100/sqlite3.c -o sqlite3.o -O2 -g  -I. -fPIC  -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_THREADSAFE=1
cc -o sqlite3 \
	/root/sqlite-autoconf-3490100/shell.c /root/sqlite-autoconf-3490100/sqlite3.c -Wl,-rpath,/usr/local/lib -lpthread -lm -ldl -lz    \
	-I. -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_THREADSAFE=1 -DSQLITE_HAVE_ZLIB=1 \
	-O2 -g    \
	 
cc -o libsqlite3.so  sqlite3.o -shared \
	 -Wl,-rpath,/usr/local/lib -lpthread -lm -ldl -lz    \
	 
ar cr libsqlite3.a sqlite3.o
[root@Test-Node1 sqlite-autoconf-3490100]# make  install
/usr/bin/install libsqlite3.so "/usr/local/lib"
Setting up libsqlite3.so version symlinks...
lrwxrwxrwx. 1 root root      20 Mar 10 22:09 libsqlite3.so -> libsqlite3.so.3.49.1
lrwxrwxrwx. 1 root root      20 Mar 10 22:09 libsqlite3.so.0 -> libsqlite3.so.3.49.1
-rwxr-xr-x. 1 root root 5749528 Mar 10 22:09 libsqlite3.so.3.49.1
/usr/bin/install -m 0644 libsqlite3.a "/usr/local/lib"
/usr/bin/install -s sqlite3 "/usr/local/bin"
/usr/bin/install -m 0644 /root/sqlite-autoconf-3490100/sqlite3.h /root/sqlite-autoconf-3490100/sqlite3ext.h "/usr/local/include"
+ /usr/bin/install -d /usr/local/lib/pkgconfig
/usr/bin/install -m 0644 sqlite3.pc "/usr/local/lib/pkgconfig"
/usr/bin/install -m 0644 /root/sqlite-autoconf-3490100/sqlite3.1 "/usr/local/share/man/man1"
[root@Test-Node1 sqlite-autoconf-3490100]# sqlite3 --version
3.49.1 2025-02-18 13:38:58 873d4e274b4988d260ba8354a9718324a1c26187a4ab4c1cc0227c03d0f10e70 (64-bit)
[root@Test-Node1 sqlite-autoconf-3490100]#