Ubuntu编译安装sqlite3库

基础环境说明:本机使用Windows 11 家庭版本搭载 Ubuntu 22.04.4 LTS 子系统。进行sqlite3 数据库源码编译和库函数生成。

sqlite3的简介

什么是SQLite3?

sqlite3是一个进程内的库,实现了自给自足、无服务器、零配置、事务性的SQL数据库引擎。它是一个增长最快的数据库引擎。它不是一个独立的进程,可以按应用程序需求进行静态或动态连接,SQLite直接访问其存储文件。

为什么要使用sqlite

不需要一个单独的服务器进程或操作的系统(无服务器的)。

SQLite 不需要配置,这意味着不需要安装或管理。

一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。

SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。

SQLite 是自给自足的,这意味着不需要任何外部的依赖。

SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。

SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。

SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。

SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)Windows(Win32, WinCE, WinRT)中运行。

Ubuntu编译安装sqlite3

第一步:访问sqlite3 官方网站,下载自动编译源文件。https://www.sqlite.org/

下载 sqlite-autoconf-3460000.tar.gz 存放在Ubuntu 系统的位置路径地址:/mnt/e/github_source_code/sqlite-autoconf-3460000.tar.gz

第二步:解压、编译和库函数拷贝系统库

解压sqlite-autoconf-3460000.tar.gz 并切换至对应的文件夹目录,相关指令如下:

tar -zxvf sqlite-autoconf-3460000.tar.gz


cd sqlite-autoconf-3460000/

创建 sqlite_libaray 文件夹执行,用于指定sqlite3库文件、头文件和可行性命令.

 mkdir sqlite_library

执行编译:

1.首先需要切换回sqlite3 源码文件夹:

wz2012@LAPTOP-8R0KHL88:/mnt/e/github_source_code$ cd sqlite-autoconf-3460000/

./configure --prefix=/mnt/e/github_source_code/sqlite_library(--prefix用于指定sqlite库文件、头文件和可行性命令的安装路径)

2.

make //进行编译

3.

make install (把sqlite安装到--prefix指定的目录下)

顺利执行后,在/mnt/e/github_source_code/sqlite_library目录下会出现四个文件夹,即:

  • bin 存放sqlite命令文件

  • include 存放sqlite的头文件

  • lib 存放sqlite库文件,包括静态库和动态库

  • share 存放帮助文件等辅助性的文档

第三步:移植

Linux中存放系统库文件的位置usr/lib、usr/include;

当要使用第三方库函数时,将.h和.so .a文件等加入usr/include、usr/lib即可;

执行如下命令:

将sqlite_library 中lib 文件夹中已libsqlite3* 开头的.h和.so 文件拷贝至/usr/lib 文件夹中。

wz2012@LAPTOP-8R0KHL88://$ cd /mnt/e/github_source_code/sqlite_library/
wz2012@LAPTOP-8R0KHL88:/mnt/e/github_source_code/sqlite_library$ cd lib
wz2012@LAPTOP-8R0KHL88:/mnt/e/github_source_code/sqlite_library/lib$sudo cp libsqlite3* /usr/lib

将sqlite_library 中lib 文件夹中已libsqlite3* 开头的.h和.so 文件拷贝至/usr/include 文件夹中。

wz2012@LAPTOP-8R0KHL88://$ cd /mnt/e/github_source_code/sqlite_library/
wz2012@LAPTOP-8R0KHL88:/mnt/e/github_source_code/sqlite_library$ cd include
wz2012@LAPTOP-8R0KHL88:/mnt/e/github_source_code/sqlite_library/include$ sudo cp * /usr/include/

第四步:在Ubuntu 系统中使用C 语言连接sqlite3 数据库/验证

#include <stdio.h>
#include <sqlite3.h>
int main(int argc, char *argv[])
{
	sqlite3 *db;
    char *err_msg = 0;

    // 打开数据库连接
    int rc = sqlite3_open("test.db", &db);

    if (rc) {
        fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));
        return 1;
    } else {
        fprintf(stderr, "成功打开数据库\n");
    }

    // 创建一个表
    char *sql = "CREATE TABLE IF NOT EXISTS Cars(Id INT, Name TEXT, Price INT)";
    
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);

    if (rc != SQLITE_OK ) {
        fprintf(stderr, "SQL 错误: %s\n", err_msg);
        sqlite3_free(err_msg);
    } else {
        fprintf(stdout, "成功创建表\n");
    }

    // 关闭数据库连接
    sqlite3_close(db);
	return 0;
}

编译命令方式:

第一种:默认链接动态库

gcc sqlite3_demo1.c -o sqlite3_demo1 -lsqlite3

第二种:指定链接动态库

gcc sqlite3_demo1.c -o sqlite3_demo1 -static -lsqlite3 -lpthread -ldl 

控制台结果输出:

wz2012@LAPTOP-8R0KHL88:/mnt/e/ubuntu_code/sqlite3数据库使用$ gcc sqlite3_demo1.c -o sqlite3_demo1 -lsqlite3
wz2012@LAPTOP-8R0KHL88:/mnt/e/ubuntu_code/sqlite3数据库使用$ ./sqlite3_demo1
成功打开数据库
成功创建表
相关推荐
Java探秘者2 小时前
Maven下载、安装与环境配置详解:从零开始搭建高效Java开发环境
java·开发语言·数据库·spring boot·spring cloud·maven·idea
2301_786964363 小时前
3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例
java·大数据·数据库·分布式·hbase
阿维的博客日记4 小时前
图文并茂解释水平分表,垂直分表,水平分库,垂直分库
数据库·分库分表
wrx繁星点点5 小时前
事务的四大特性(ACID)
java·开发语言·数据库
小小娥子5 小时前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
DieSnowK5 小时前
[Redis][集群][下]详细讲解
数据库·redis·分布式·缓存·集群·高可用·新手向
-XWB-6 小时前
【MySQL】数据目录迁移
数据库·mysql
老华带你飞6 小时前
公寓管理系统|SprinBoot+vue夕阳红公寓管理系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·课程设计
我明天再来学Web渗透6 小时前
【hot100-java】【二叉树的层序遍历】
java·开发语言·数据库·sql·算法·排序算法
Data 3176 小时前
Hive数仓操作(十一)
大数据·数据库·数据仓库·hive·hadoop