SQLiteのソースコードを読みながら、その絡繰を勉強したいんですが。DBの最も基本的な機能だけに興味があり、それに、sqlite-1.0.1 にはただ1万行くらいのソースコードがあるから、今多くのプロジェクトで応用されているsqlite3よりも読みやすいと思います。

残念なことに、今のgccでは、19年前の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

仮想コンピュータによって、古いFedora Core release 3をインストールして、ビルトインのgcc(gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3))でsqlite-1.0.1をコンパイルしてみたが、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>."

Makefileでは、-std=c89gccのパラメータとして追加してみたが、またコンパイルできません。

上記のエラーメッセージからして、gcc version 3.4.2はsqlite-1.0.1にとって、現代的なコンパイラであるかもしれません。

<varargs.h><stdarg.h>に取り替えられたcheck inがあり、そして、SQLiteの作者は「1989年にgccを使ってlemon.cをコンパイルしたのを覚えている」というコメントをそのcheck inに書き留めました。

もしかして、もっと古いgccを探す必要でしょう。こういう古いものどこから入手できますか。19年前には、プログラマ達はどのようなOSやコンパイラを使っていましたか。