【问题标题】:Size of libsqlite3.so.0.8.6 building from two different methods从两种不同的方法构建的 libsqlite3.so.0.8.6 的大小
【发布时间】:2026-02-07 21:20:12
【问题描述】:

我对使用两种不同方法构建的 libsqlite3.so.0.8.6 的大小差异有疑问。希望在这里得到社区的一些见解。

我从官方网站下载了最新的 sqlit3 源代码(版本 3.36.0)、规范的(sqlite.tgz)和合并的(sqlite-autoconf-3360000.tar.gz)。然后从 Linux 的两种源类型构建并比较生成的库 (libsqlite3.so.0.8.6) 的大小。

从规范(“原始”)源构建的文件大小约为 1.1M,而来自合并源的文件大小约为 1.5M。

有人可以帮我理解库大小不同的原因吗?该库是由相同的源代码构建的,但来自两种不同的“方法”(因为没有更好的词)?

虽然如果库在类似桌面的机器上运行,大小差异可能无关紧要,但它确实很重要(在我的情况下),因为它是在嵌入式设备上运行的。

我尝试了什么:

我尝试比较这两种方法的构建日志,但无法确定任何可能导致更小的大小的重要内容。如果有什么特别需要我注意的,请提及。

谢谢,

阿什什

【问题讨论】:

  • 随机操作系统,确认大小差异。 (配置,没有选项)。 sqlite3-3.36:882.4MB 剥离。 ..... sqlite-autoconf-3360000:1.2MB 被剥离。 .....为什么:我不知道。
  • 规范的 zip 文件构建过程首先创建 sqlite3.c 合并然后编译它,所以我希望生成的目标文件大小相同。可能有不同的编译器标志和/或可选的 SQLite 组件?
  • 我的主机环境是 Ubuntu 16.04。两个构建都没有任何额外的配置选项(所有默认值)。也没有包含或排除 sqlite 组件的更改。不过,我没有剥离构建的库。 @Shawn 是的,我也注意到了。生成的合并源文件与合并前的源文件相同。也许我需要更深入地研究这两种方法的构建过程才能找到重要的东西。

标签: linux sqlite build


【解决方案1】:

我发现了不同之处。我编辑了合并源的 configure.ac 以添加和删除一些编译标志。这样做会禁用一些扩展并减小最终库的大小。

已删除:

-DSQLITE_ENABLE_FTS5

-DSQLITE_ENABLE_FTS4

-DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_GEOPOLY

-DSQLITE_ENABLE_JSON1

添加:

-DNDEBUG

如果我更仔细地查看构建日志,我可能会更早看到这一点。

【讨论】:

    最近更新 更多