首页 > 解决方案 > 如何编译 18 年前发布的 sqlite-1.0.1

问题描述

我想通过阅读它的源代码来学习 sqlite。我发现sqlite-1.0.1只包含 10,000+ 行代码,也许它很容易阅读。但不幸的是,现代 gcc 无法编译 sqlite-1.0.1。

wget "https://www.sqlite.org/src/tarball/e8521fc1/SQLite-e8521fc1.tar.gz"
tar xzvf SQLite-e8521fc1.tar.gz
mkdir bld && cd bld
../SQLite-e8521fc1/configure --prefix=/opt/sqlite-1.0.1 --with-tcl=no
make

当我发布make时,它报告了

gcc -std=c89 -g -O2 -o lemon ../SQLite-e8521fc1/tool/lemon.c
In file included from ../SQLite-e8521fc1/tool/lemon.c:29:
/usr/lib/gcc/i386-redhat-linux/3.4.2/include/varargs.h:4:2: #error "GCC no longer implements <varargs.h>."
/usr/lib/gcc/i386-redhat-linux/3.4.2/include/varargs.h:5:2: #error "Revise your code to use <stdarg.h>."

我尝试在 中添加-std=c89以下内容,但没有成功。gccMakefile

我特地装了一个老的Fedora Core release 3虚拟机来编译SQLite-1.0.1,但是看起来Fedora 3里面的gcc(gcc version 3.4.2 20041017(Red Hat 3.4.2-6.fc3))还是太现代 18 年前的代码。

我找到了一个check in,里面<varargs.h>被替换了<stdarg.h>,作者说可能他lemon.c1989年用gcc编译过。

也许一个非常旧的 gcc 或 Linux(2000 年之前)可以解决这个问题,但是我怎样才能得到那个呢?

标签: sqlitelegacy

解决方案


推荐阅读