小。速度很快。可靠。
选择任意三个选项。
SQLite合并

1执行摘要

100多个单独的源文件被连接到单个C代码大文件名为“sqlite3.C”称为“合并”。合并包含应用程序嵌入SQLite所需的一切。

将SQLite的所有代码合并到一个大文件中,可以生成SQLite更易于部署&只需跟踪一个文件。因为所有代码都在一个单一的翻译单元,编译器可以做到更好的过程间和内联优化导致机器代码速度提高5%到10%。

2SQLite合并

SQLite库由111个C代码文件组成(截至版本3.37.0- 2021-11-27)核心中有22个附加文件实现某些常用的扩展。133人中主要源文件,约75%是C代码,约25%是C头文件。从存储的意义上讲,其中大多数是“源”文件在中SQLite版本控制系统和在普通文本编辑器中手动编辑。但一些C语言文件是使用脚本生成的或辅助程序。例如解析。文件包含编译的SQL语言的LALR(1)语法,柠檬解析器生成器,生成文件中包含的解析器“parse.c”,在“parse.h”中带有标记标识符。

SQLite的makefiles有一个“sqlite3.c”目标,用于构建合并,以包含核心SQLite库和飞行时间3,飞行时间5,RTREE公司,DBSTAT公司,JSON1格式,RBU(RBU)会议扩展名。这个文件包含大约238K行代码(如果省略空白行和注释,则为145K),超过8.4 MB规模(截至2021-12-29年)。

虽然在“sqlite3.c”合并文件,使用ifdef语句禁用它们。使用激活扩展编译时间选项例如:

合并包含集成SQLite所需的所有内容成为一个更大的项目。只需将合并复制到源代码中目录,并将其与项目中的其他C代码文件一起编译。(A)更详细的讨论编译过程的可用。)您可能还想利用“sqlite3.h”头文件定义SQLite的编程API。sqlite3.h头文件单独提供。sqlite3.h文件也包含在合并中,位于前几千行。所以如果你有一份sqlite3.c但似乎找不到sqlite3.h,您可以随时通过从合并中复制和粘贴来重新生成sqlite3.h。

除了使SQLite更容易合并到其他项目,合并也使其运行更快。许多编译器能够在以下情况下对代码进行额外优化它包含在单个翻译单元中,例如正在合并中。我们衡量了性能改进当我们使用合并来编译时,在5%到10%之间SQLite而不是单个源文件。这样做的缺点额外的优化通常采取以下形式函数内联,它倾向于使结果的大小二进制图像更大。

三。分裂合并

开发人员有时在调试由于一些调试器,导致四分之一百万行合并源文件只能处理小于32768的源代码行号。合并源代码运行良好。一个人不能一步到位在调试器中通过它。

为了规避这一限制,合并也可以在由文件“sqlite3-1.c”、“sqlite3-2.c”和以此类推,其中每个文件的长度小于32768行,并且其中,文件的串联包含完全合并。然后有一个名为“sqlite3-all.c”基本上由如下代码组成:

#包括“sqlite3-1.c”#包括“sqlite3-2.c”#包括“sqlite3-3.c”#包括“sqlite3-4.c”#包括“sqlite3-5.c”#包括“sqlite3-6.c”#包括“sqlite3-7.c”

使用拆分合并的应用程序只需编译“sqlite3-all.c”而不是“sqlite3.c”。这两个文件完全有效相同的。但是使用“sqlite3all.c”,没有任何一个源文件包含更多超过32767行代码,因此使用一些调试器。拆分合并的缺点是它包括6个C源代码文件,而不仅仅是1个。

4下载预编译合并的副本

合并和sqlite3.h头文件位于这个下载页面作为文件命名为sqlite-amalgamation-X.zip其中X被相应的版本号替换。

5从标准源代码构建合并

建立合并(完全合并或拆分合并),首先获取规范的源代码从三个服务器之一。然后,在类unix系统和具有自由的工具链开发环境安装后,可以使用以下命令:

sh配置生成sqlite3.c

要使用Microsoft Visual C++生成,请运行以下命令:

nmake/f生成文件.msc sqlite3.c

在这两种情况下,拆分合并可以通过以下方式获得用“sqlite3-all.c”替换“sqlite3.c”作为make目标。

5.1.依赖关系

构建过程广泛使用Tcl公司脚本语言。你需要一个为使上述make目标正常工作而安装的TCL副本。易于使用的安装程序可以从http://www.tcl-lang.org/.许多unix工作站默认安装了Tcl。

5.2.另请参见

有关编译SQLite的其他注释可以在如何编译SQLite第页。

此页面上次修改时间2023-08-03 14:10:55联合技术公司