新版SQLite源码下载与编译
liebian365 2024-11-19 06:27 3 浏览 0 评论
概述
“最新版GDAL源码下载 ”一文中,我们为大家分享了最新版本的GDAL源码,而GDAL是需要依赖PROJ投影转换库的。
因此,在最新版投影转换工具PROJ源码 ”一文中,我们又为大家分享了PROJ的源码,如果你对PROJ源码进行编译,会发现它会需要SQLite的支持。
这里,我们再为大家分享SQLite的源码下载与编译的方法,你可以通过关注微信公众号“水经注GIS”并回复“SQLite”获取最新版本的SQLite源码与基于VS2015的编译工程文件。
什么是SQLite?
SQLite是一个进程库,实现了一个自包含的,无服务器,零配置及事务性的SQL数据库引擎。
SQLite的源代码是公开的,因此可以免费用于任何目的,无论是否是商业目的。
SQLite是世界上部署最广泛的数据库,其应用程序数量超出我们的想象,其中包括Adobe公司、Airbus公司、FaceBook、微软、苹果和谷歌等世界知名企业,SQLite数据库文件也是美国国会图书馆推荐的存储格式。
SQLite是嵌入式SQL数据库引擎,与大多数其他SQL数据库不同,SQLite没有单独的服务器进程。
SQLite直接读取和写入普通磁盘文件,具有多个表、索引、触发器和视图的完整SQL数据库包含在单个磁盘文件中。
数据库文件格式是跨平台的,因此可以在32位和64位系统之间或在big-endian和 little-endian 体系结构之间自由复制数据库,这些功能使SQLite成为应用程序文件格式的流行选择。
SQLite是一个紧凑的库,启用所有功能后,库大小可以小于600KB,具体取决于目标平台和编译器优化的设置。
SQLite在内存越大的情况下运行速度就越快,即使在低内存环境下,性能通常也相当不错,甚至可能会比直接通过系统I/O读取更快。
如何下载最新版SQLite源码
最新版本的SQLite源码可以到官方网站下载,在官方网站的第一项下载链接即为源码,如下图所示。
SQLite官网
另外,还需要下载模块定义文件sqlite3.def,否则无法生成sqlite3.lib库,如下图所示。
下载预编译文件
为了便于使用,可以把源码和预编译文件的32位与64位版本都下载下来,如下图所示。
源码文件压缩包
将文件进行解压,根据实际需要,预编译文件可以选择32位或64位版本,最后将源码文件汇总到一个目录中备用,如下图所示。
以上准备工作就绪之后,接下来就可以对源码进行编辑了。
如何基于VS2015编译SQLite源码
我们基于VS2015对SQLite源码进行编译,如果你还没有任何编译工具,请参阅“Visual Studio 2015 安装教程(附安装包)”一文部署安装编译环境。
在VS2015中新建一个名为“sqlite3”的Win32项目,如下图所示。
点击下一步继续,然后在应用程序设置中选择“DLL”和“空项目”,如下图所示。
项目新建完成后,将之前准备的源码文件复制到工程目录,如下图所示。
通过添加现有项功能,将头文件sqlite.h和sqlite3ext.h添加到工程中,如下图所示。
另外,也需要将shell.c、sqlite3.c和sqlite3.def添加到源文件中,如下图所示。
现在如果直接编译工程,则不会生成sqlite3.lib库文件,因此需要在项目属性中设置sqlite3.def模块定义文件,如下图所示。
现在将源码进行编辑之后,会生成许多错误提示:
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name16
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_origin_name16
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_table_name16
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_deserialize
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_fts3_may_be_corrupt
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_fts5_may_be_corrupt
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_count
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_depth
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_hook
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_new
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_preupdate_old
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_rtree_geometry_callback
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_rtree_query_callback
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_serialize
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_add
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_add_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_delete
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_new
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_output
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changegroup_output_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply_v2
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_apply_v2_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_concat
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_concat_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_conflict
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_finalize
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_fk_conflicts
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_invert
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_invert_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_new
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_next
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_old
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_op
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_pk
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start_v2
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3changeset_start_v2_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_configure
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_create
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_delete
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_rebase
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3rebaser_rebase_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_attach
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_changeset
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_changeset_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_config
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_create
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_delete
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_diff
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_enable
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_indirect
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_isempty
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_memory_used
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_patchset
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_patchset_strm
1>sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3session_table_filter
生成错误的原因,是因为在sqlite3.def中定义的函数在源码中默认没有导出,需要在工程属性中添加以下预处理定义,如下所示。
SQLITE_CORE
SQLITE_EXPORTS
SQLITE_ENABLE_FTS3
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_SESSION
SQLITE_ENABLE_PREUPDATE_HOOK
SQLITE_ENABLE_DESERIALIZE
只要上述配置正确,无论是在Debug还是Release版本下都可以编译成功,如下图所示。
编译成功后,就可以在源码工程的Debug或Release目录中找到sqlite3.dll和sqlite3.lib文件,如下图所示。
现在,我们将下载的源码文件压缩包,编译成功的工程源码整理到了一个目录中,如下图所示。
为了方便分享,我们将上述整理好的文件打包上传到了百度网盘中,请通过关注微信公众号“水经注GIS”,然后在后台回复“SQLite”可获取下载地址。
总结
SQLite代码库由一支全职从事SQLite工作的国际开发人员团队支持,以持续扩展SQLite的功能并增强其可靠性和性能,同时保持与已发布的接口规范,以及SQL语法和数据库文件格式的向后兼容性。
最后,如果你在SQLite源码编译过程中遇到任何难题,请通过关注公众号“水经注GIS”并在后台留言告诉我们,我们将竭尽所能地为你提供帮助,从而将我们“为用户提供丰富的地图数据与专业的GIS服务”之宗旨落到实处!
相关推荐
- 快递查询教程,批量查询物流,一键管理快递
-
作为商家,每天需要查询许许多多的快递单号,面对不同的快递公司,有没有简单一点的物流查询方法呢?小编的回答当然是有的,下面随小编一起来试试这个新技巧。需要哪些工具?安装一个快递批量查询高手快递单号怎么快...
- 一键自动查询所有快递的物流信息 支持圆通、韵达等多家快递
-
对于各位商家来说拥有一个好的快递软件,能够有效的提高自己的工作效率,在管理快递单号的时候都需要对单号进行表格整理,那怎么样能够快速的查询所有单号信息,并自动生成表格呢?1、其实方法很简单,我们不需要一...
- 快递查询单号查询,怎么查物流到哪了
-
输入单号怎么查快递到哪里去了呢?今天小编给大家分享一个新的技巧,它支持多家快递,一次能查询多个单号物流,还可对查询到的物流进行分析、筛选以及导出,下面一起来试试。需要哪些工具?安装一个快递批量查询高手...
- 3分钟查询物流,教你一键批量查询全部物流信息
-
很多朋友在问,如何在短时间内把单号的物流信息查询出来,查询完成后筛选已签收件、筛选未签收件,今天小编就分享一款物流查询神器,感兴趣的朋友接着往下看。第一步,运行【快递批量查询高手】在主界面中点击【添...
- 快递单号查询,一次性查询全部物流信息
-
现在各种快递的查询方式,各有各的好,各有各的劣,总的来说,还是有比较方便的。今天小编就给大家分享一个新的技巧,支持多家快递,一次能查询多个单号的物流,还能对查询到的物流进行分析、筛选以及导出,下面一起...
- 快递查询工具,批量查询多个快递快递单号的物流状态、签收时间
-
最近有朋友在问,怎么快速查询单号的物流信息呢?除了官网,还有没有更简单的方法呢?小编的回答当然是有的,下面一起来看看。需要哪些工具?安装一个快递批量查询高手多个京东的快递单号怎么快速查询?进入快递批量...
- 快递查询软件,自动识别查询快递单号查询方法
-
当你拥有多个快递单号的时候,该如何快速查询物流信息?比如单号没有快递公司时,又该如何自动识别再去查询呢?不知道如何操作的宝贝们,下面随小编一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号若干...
- 教你怎样查询快递查询单号并保存物流信息
-
商家发货,快递揽收后,一般会直接手动复制到官网上一个个查询物流,那么久而久之,就会觉得查询变得特别繁琐,今天小编给大家分享一个新的技巧,下面一起来试试。教程之前,我们来预览一下用快递批量查询高手...
- 简单几步骤查询所有快递物流信息
-
在高峰期订单量大的时候,可能需要一双手当十双手去查询快递物流,但是由于逐一去查询,效率极低,追踪困难。那么今天小编给大家分享一个新的技巧,一次能查询多个快递单号的物流,下面一起来学习一下,希望能给大家...
- 物流单号查询,如何查询快递信息,按最后更新时间搜索需要的单号
-
最近有很多朋友在问,如何通过快递单号查询物流信息,并按最后更新时间搜索出需要的单号呢?下面随小编一起来试试吧。需要哪些工具?安装一个快递批量查询高手快递单号若干怎么快速查询?运行【快递批量查询高手】...
- 连续保存新单号功能解析,导入单号查询并自动识别批量查快递信息
-
快递查询已经成为我们日常生活中不可或缺的一部分。然而,面对海量的快递单号,如何高效、准确地查询每一个快递的物流信息,成为了许多人头疼的问题。幸运的是,随着科技的进步,一款名为“快递批量查询高手”的软件...
- 快递查询教程,快递单号查询,筛选更新量为1的单号
-
最近有很多朋友在问,怎么快速查询快递单号的物流,并筛选出更新量为1的单号呢?今天小编给大家分享一个新方法,一起来试试吧。需要哪些工具?安装一个快递批量查询高手多个快递单号怎么快速查询?运行【快递批量查...
- 掌握批量查询快递动态的技巧,一键查找无信息记录的两种方法解析
-
在快节奏的商业环境中,高效的物流查询是确保业务顺畅运行的关键。作为快递查询达人,我深知时间的宝贵,因此,今天我将向大家介绍一款强大的工具——快递批量查询高手软件。这款软件能够帮助你批量查询快递动态,一...
- 从复杂到简单的单号查询,一键清除单号中的符号并批量查快递信息
-
在繁忙的商务与日常生活中,快递查询已成为不可或缺的一环。然而,面对海量的单号,逐一查询不仅耗时费力,还容易出错。现在,有了快递批量查询高手软件,一切变得简单明了。只需一键,即可搞定单号查询,一键处理单...
- 物流单号查询,在哪里查询快递
-
如果在快递单号多的情况,你还在一个个复制粘贴到官网上手动查询,是一件非常麻烦的事情。于是乎今天小编给大家分享一个新的技巧,下面一起来试试。需要哪些工具?安装一个快递批量查询高手快递单号怎么快速查询?...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)